union-find-set
class Solution {
private int[] fa;
public int find(int x){
if (fa[x]!=x) fa[x] = find(fa[x]);
return fa[x];
}
public int earliestAcq(int[][] logs, int n) {
fa = new int[n];
for (int i=0;i<n;i++) fa[i] = i;
int groups = n;
Arrays.sort(logs, new Comparator<int[]>(){
public int compare(int[] o1, int[] o2){
if (o1[0] == o2[0]) return 0;
return o1[0]<o2[0]? -1:1;
}
});
for (int[] log:logs){
int a = log[1], b = log[2];
int faa = find(a), fab = find(b);
if (faa != fab){
fa[faa] = fab;
// groups--;
// System.out.println(log[0]);
if (--groups == 1) return log[0];
}
}
return -1;
}
}