import java.util.*;
/**
* Kruskal
*/
public class Main {
static int[] root;
static List<int[]> list = new ArrayList<int[]>();
static int selected = 0;
static List<int[]> selectlist = new ArrayList<int[]>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
root = new int[n+1];
for (int i=1;i<=n;i++){
root[i] = i;
}
for (int i=0;i<m;i++){
int[] arr = new int[3];
arr[0] = scanner.nextInt();
arr[1] = scanner.nextInt();
arr[2] = scanner.nextInt();
list.add(arr);
}
Collections.sort(list, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[2]-o2[2];
}
});
for (int i=0;i<m;i++){
int a = list.get(i)[0];
int b = list.get(i)[1];
int d = list.get(i)[2];
if (!isJoin(a,b)){
join(a,b);
selected++;
selectlist.add(list.get(i));
}
if (selected == n-1){
break;
}
}
System.out.println(selectlist.get(selectlist.size()-1)[2]);
System.out.println(selectlist.size());
for (int[] arr:selectlist) {
System.out.println(arr[0]+" "+arr[1]);
}
}
public static int find(int a){
if (root[a] == a){
return a;
}
return root[a] = find(root[a]);
}
public static void join(int a,int b){
int rootA = find(a);
int rootB = find(b);
if (rootA != rootB){
root[rootA] = rootB;
}
}
public static boolean isJoin(int a,int b){
return find(a) == find(b);
}
}
08-17
238
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交