hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
2013-09-09 21:00
501 查看
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233
模板题,kruskal求最小生成树。 并查集是个好东西啊 就是注意一点 输入边的信息时,角标应该是从0开始的
代码:
模板题,kruskal求最小生成树。 并查集是个好东西啊 就是注意一点 输入边的信息时,角标应该是从0开始的
代码:
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; struct edge { int u; int v; int w; }; int p[100]; edge e[5000]; bool cmp(edge a,edge b) { return a.w<b.w; } int find(int x) { if(p[x]==x) return x; else { return p[x]=find(p[x]); } } int n,m; long long kruskal() { for(int i=0;i<n;i++) p[i]=i; long long ans=0; for(int i=0;i<m;i++) { int x=find(e[i].u); int y=find(e[i].v); if(x!=y) { ans+=e[i].w; p[x]=y; } } return ans; } int main() { while(cin>>n) { if(n==0) break; m=n*(n-1)/2; int a,b,c; for(int i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); e[i].u=a-1; e[i].v=b-1; e[i].w=c; } sort(e,e+m,cmp); cout<<kruskal()<<endl; } }
相关文章推荐
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- hdu 1233 还是畅通工程 (最小生成树,prim,优先队列,kruskal并查集)
- hdu 1233 还是畅通工程(kruskal求最小生成树)
- hdu 1233(还是畅通工程)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)
- HDU 1233 还是畅通工程 最小生成树Kruskal算法/并查集
- HDU 1233 还是畅通工程 (最小生成树 Kruskal)
- HDU - 1233 [还是畅通工程 ] 最小生成树Kruskal
- HDU 1233 还是畅通工程 最小生成树K算法 并查集
- hdu 1233 还是畅通工程(prim和kruskal最小生成树)
- HDU 1233.还是畅通工程【最小生成树 kruskal算法(并查集)+prim算法】【1月8】
- HDU 1233 还是畅通工程 (最小生成树、并查集)
- 【最小生成树+kruskal】杭电 hdu 1233 还是畅通工程
- HDU--1233:还是畅通工程 (并查集 & 最小生成树Prim)
- HDU 1233-还是畅通工程(经典的最小生成树, Kruskal和prim算法)
- 【最小生成树】+【并查集】-HDU-1233-还是畅通工程
- hdu 1233 还是畅通工程 最小生成树Kruskal算法(并查集)
- hdu-1863畅通工程 最小生成树克鲁斯卡尔算法kruskal(并查集实现)&&prim普利姆算法实现
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
- HDU 1233 还是畅通工程【最小生成树】