hdu 1863 畅通工程(最小生成树,kruskal)
来源:互联网 发布:java如何比较日期大小 编辑:程序博客网 时间:2024/05/29 07:18
#include <cstdio>#include <algorithm>using namespace std;struct node{ int u,v,w;};node e[5005];int f[101];int n,m;bool cmp(node& a , node& b){ return a.w < b.w;}int getf(int x){ if(x == f[x]) return x; else { f[x] = getf(f[x]); return f[x]; }}int merges(int x, int y){ int t1,t2; t1 = getf(x); t2 = getf(y); if(t1 != t2) { f[t2] = t1; return 1; } return 0;}int main(){ while(scanf("%d %d",&m,&n) && m) { for(int i = 1; i <= m; ++i) scanf("%d %d %d",&e[i].u,&e[i].v,&e[i].w); sort(e+1,e+m+1,cmp); for(int i = 1; i <= n; ++i) f[i] = i; int sum = 0, counts = 0,flag = 0; for(int i = 1; i <= m; ++i) { if(merges(e[i].u,e[i].v)) { ++counts; sum += e[i].w; } if(counts == n-1) { flag = 1; break; } } if(flag) printf("%d\n",sum); else printf("?\n"); } return 0;}
上边的代码15ms,
下边的0ms
#include <iostream>#include <algorithm>using namespace std;int n,m;int f[101],u[5005],v[5005],w[5005],r[5005];bool cmp(const int& i, const int& j){ return w[i] < w[j];}int getf(int x){ return f[x] == x ? x:(f[x] = getf(f[x]));}int main(){ int sum,counts; while((cin >> m >> n) && m) { sum = 0; counts = 0; for(int i = 0; i < m; ++i) cin >> u[i] >> v[i] >> w[i]; for(int i = 0; i < m; ++i) r[i] = i; for(int i = 0; i <= n; ++i) f[i] = i; sort(r,r+m,cmp); for(int i = 0; i < m; ++i) { int e = r[i]; int x = getf(u[e]); int y = getf(v[e]); if(x != y) { ++counts; sum += w[e]; f[y] = x; } } if(counts == n-1) cout << sum << endl; else cout << "?" << endl; } return 0;}
0 0
- hdu 1863 畅通工程 (最小生成树kruskal 算法)
- hdu 1863 畅通工程(最小生成树,kruskal)
- HDU 1863 畅通工程(最小生成树 kruskal)
- HDU 1863 畅通工程(最小生成树-Kruskal)
- 【最小生成树+kruskal】杭电 hdu 1863 畅通工程
- HDU 1863 畅通工程 kruskal算法 最小生成树
- HDU 1863 畅通工程 (最小生成树Kruskal)
- HDU 1233 还是畅通工程(最小生成树Kruskal)
- HDU 1879 继续畅通工程(最小生成树Kruskal)
- HDU 1233 还是畅通工程 (最小生成树 Kruskal)
- HDU 1879 继续畅通工程(最小生成树 Kruskal)
- HDU 1233 还是畅通工程(最小生成树kruskal)
- HDU 1879 继续畅通工程(最小生成树-Kruskal)
- HDOJ 1863 畅通工程(最小生成树--kruskal)
- HDOJ 1863 畅通工程 (Kruskal 最小生成树)
- HDOJ 1863 畅通工程(Kruskal最小生成树)
- 【最小生成树】(模板-kruskal算法)hdu 1863 畅通工程
- 【HDU 1863】畅通工程(基础最小生成树,Kruskal算法)
- php总结
- 古代猪文 [Bzoj 1951,Sdoi 2010]
- 用递归的方法求解3
- June 11th 模拟赛C T1 Sandcas Solution
- CSP考试 2016年04月第2题 俄罗斯方块 C语言实现
- hdu 1863 畅通工程(最小生成树,kruskal)
- <LeetCode OJ> 318. Maximum Product of Word Lengths
- 设计模式系列(三)工厂模式
- html标签复习--2016.6.13
- MongoDB(三)主从复制以及副本集的配置和使用
- 集合框架基础和例题
- JAVA的MD5和SHA-256和SHA-512 的 Hash 算法的调用
- svn查看用户,切换用户
- 我本一无所有——读《明朝那些事儿》