1 CCF上提交是100分,但是题目上已给的例子是无法通过的(没有检查是否成树)。
输入:
4
5
1
1 2 3
1 3 4
1 4 5
2 3 8
3 4 2
输出:3
原因:
按权排序后为:
3 4 2
1 2 3
1 3 4
1 4 5
2 3 8
所以仅仅3-4 ,1-2联通。但没有成树。但提交通过。。。
import java.awt.SystemColor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
List<int[]> allp = new ArrayList<>(); //接收m条边和其权值的列表
int ans = -1; //所需要的答案
int n = in.nextInt();
int m = in.nextInt();
int root= in.nextInt();
int[] nn = new int[n]; //n个点
for(int i=0;i<m;i++)
{
int[] mn= new int[3];
mn[0]=in.nextInt();
mn[1]=in.nextInt();
mn[2]=in.nextInt();
allp.add(mn);
}
Collections.sort(allp, new Comparator<int[]>() { //按权值排序
@Override
public int compare(int[] a,int[] b)
{
if(a[2]>b[2])
return 1;
else
return -1;
}
});
for(int i=0;i<allp.size();i++)
{
if(nn[allp.get(i)[1]-1]!=1||nn[allp.get(i)[0]-1]!=1) //判断此边的两个点是否已被连接
{
nn[allp.get(i)[1]-1]=1;
nn[allp.get(i)[0]-1]=1;
if(allp.get(i)[2]>ans) //更新最小树的最大权值
ans=allp.get(i)[2];
}
}
System.out.println(ans); //输出答案
}
}