int cmp(const int i,const int j){ return w[i] < w[j]; } int find(int x){ return x == pre[x] ? x : pre[x] = find(pre[x]); } int join(int x,int y){ int fx = find(x); int fy = find(y); if(fx != fy){ pre[fy] = fx; return 1; } return 0; } int Kruskal(int n,int m){ for(int i = 1; i <= n; i++){ pre[i] = i; } for(int i = 0; i < m; i++){ r[i] = i; } sort(r,r + m,cmp); int years = 0; int cnt = 0; for(int i = 0; i < m; i++){ int e = r[i]; if(join(u[e],v[e])){ ans += w[e]; cnt++; } if(cnt == n - 1){ break; } } return ans; }
Minimum spanning tree Kruskal algorithm template
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=324452289&siteId=291194637
Ranking