标签:
#include <algorithm>#include <cstring>#include <cstdio>using namespace std;int fa[30];void ini(int n){for(int i = 0 ;i <= n ; ++i)fa[i] = i;}int fnd(int x){return x == fa[x]?x:fa[x] = fnd(fa[x]);}struct Edge{int u,v,c;Edge(int _u = 0,int _v = 0,int _c = 0):u(_u),v(_v),c(_c){}bool operator < (const Edge & a)const{return c < a.c;}}e[100];int main(){int n,k,u,cnt,tmp;char ch[10];while(~scanf("%d",&n) && n){cnt = 0;for(int i = 0 ; i < n - 1 ; ++i){scanf("%s%d",ch,&tmp);u = ch[0] - ‘A‘;for(int j = 0 ;j < tmp ; ++j){scanf("%s%d",ch,&k);e[cnt++] = Edge(u,ch[0] - ‘A‘,k);}}ini(n);sort(e,e+cnt);int cur = 0,f1,f2,ans = 0;for(int i = 0 ; i < cnt;++i){f1 = fnd(e[i].u);f2 = fnd(e[i].v);if(f1 != f2){fa[f1] = f2;ans += e[i].c;++cur;}if(cur == n - 1) break;}printf("%d\n",ans);}return 0;}
[2016-04-09][POJ][1251][Jungle Roads]
标签:
原文地址:http://www.cnblogs.com/qhy285571052/p/3f4edb70fa4986699c83ebc88c142541.html