题解 | #最小生成树#
最垃圾的算法,代码简单易懂
import java.util.*; public class Solution { public int miniSpanningTree (int n, int m, int[][] cost) { HashSet<Integer> points=new HashSet<>();//不能用int int res=0; Arrays.sort(cost,0,cost.length,(a,b)-> { return a[2]-b[2]; //重载比较,按照边权递增 }); res+=cost[0][2];//首先将最小的边加入 points.add(cost[0][0]); points.add(cost[0][1]); while(points.size()!=n){ for(int i=1;i<cost.length;i++){ //只要不是两者都在集合就行,否则形成环 if(points.contains(cost[i][0])&&!points.contains(cost[i][1])||!points.contains(cost[i][0])&&points.contains(cost[i][1])){ res+=cost[i][2]; points.add(cost[i][0]); points.add(cost[i][1]); break;//找到一条边后必须从头开始找 } } } return res; } }