ZOJ 1406 Jungle Roads (kruskal)
2010-08-28 00:16
351 查看
史上最水最小生成树,不解释,不注释。
#include<iostream> using namespace std; int u[500],v[500],w[500]; int r[500],p[500];; int a,b,counter,n; int cases,i,j; char c[5]; int cmp(const int i,const int j) {return w[i]<w[j];} int find(int x) {return p[x]==x?x:p[x]=find(p[x]);} int kruskal(void) { int ans = 0; for(int i = 1; i <= n; i++) p[i] = i; for(int i = 1; i <= counter; i++) r[i] = i; sort(r,r+counter+1,cmp); for(int i = 1; i <= counter; i++) { int e = r[i]; int x = find(u[e]),y = find(v[e]); if( x - y ) { ans += w[e]; p[x] = y; } } return ans; } int main(void) { while( cin >> n && n ) { counter = 0; for(i = 1; i < n; i++ ) { cin >> c; a = c[0] - 'A' + 1; cin >> cases; for( j = 1;j <= cases; j++ ) { counter++; cin >> c; b = c[0] - 'A' + 1; u[counter] = a; v[counter] = b; cin >> w[counter]; } } cout << kruskal() << endl; } return 0; }
相关文章推荐
- ZOJ 1406 Jungle Roads 【kruskal】
- zoj 1406 Jungle Roads(Prim || Kruskal)
- ZOJ1406 POJ1251 Jungle Roads,Prim算法~
- zoj 1406 Jungle Roads
- POJ1251 || ZOJ1406 kruskal求最小生成树
- zoj 1406 Jungle Roads(最小生成树))
- zoj 1406 Jungle Roads
- zoj 1406 Jungle Roads(简单-MST)
- ZOJ 1406 Jungle Roads (最小生成树)
- zoj 1406 Jungle Roads
- zoj 1406 Jungle Roads 最小生成树
- zoj_1406 Jungle Roads
- ZOJ 1406 Jungle Roads (最小生成树)
- Jungle roads (zoj 1406 hdoj 1301)
- POJ 1251 Jungle Roads (zoj 1406) MST
- zoj - 1406 - Jungle Roads
- POJ 1251 Jungle Roads (zoj 1406) MST
- zoj1406----------Jungle Roads 最小生成树 prim
- zoj - 1406 - Jungle Roads
- (最小生成树)ZOJ 1406 Jungle Roads