标签:最小生成树
基础最小生成树。Kruskal 比较简单,排序+并查集。
最多26个点。
处理下字母,输入共n-1行。
算是复习了。
#include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<queue> #include<map> #include<stack> #include<iostream> #include<list> #include<set> #include<cmath> #define INF 0x7fffffff #define eps 1e-6 using namespace std; int fa[27]; int father(int x) { if(x!=fa[x]) fa[x]=father(fa[x]); return fa[x]; } struct lx { int u,v,len; }l[10001]; bool cmp(lx a,lx b) { return a.len<b.len; } int main() { int m; while(scanf("%d",&m),m) { char str[2]; int n; int u,v,len; int cot=0; for(int i=0;i<m-1;i++) { scanf("%s%d",str,&n); u=str[0]-'A'; while(n--) { scanf("%s%d",str,&len); v=str[0]-'A'; l[cot].u=u; l[cot].v=v; l[cot++].len=len; } } for(int i=0;i<27;i++) fa[i]=i; sort(l,l+cot,cmp); int ans=0; for(int i=0;i<cot;i++) { int fu=father(l[i].u); int fv=father(l[i].v); if(fu==fv)continue; fa[fv]=fu; ans+=l[i].len; } printf("%d\n",ans); } }
POJ 1251 Jungle Roads,布布扣,bubuko.com
标签:最小生成树
原文地址:http://blog.csdn.net/dongshimou/article/details/36693137