HDU 1233 还是畅通工程
来源:互联网 发布:淘宝比较好的银饰店 编辑:程序博客网 时间:2024/04/29 19:57
链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1233
最小生成树,Prim和Kruskal
Prim:
#include <cstdio>#include <climits>#include <cstring>using namespace std;int map[101][101];bool used[101];int Prim(int n){ int sum=0; int mini,t,T=n-1; while(T--) { mini=INT_MAX; for(int i=2; i<=n; i++) if(!used[i] && mini>map[1][i]) { t=i; mini=map[1][i]; } used[t]=1; sum+=mini; for(int i=2; i<=n; i++) if(!used[i] && map[1][i]>map[t][i]) map[1][i]=map[t][i]; } return sum;}int main(){ int n; while(~scanf("%d",&n),n) { int i,j,dis,T=n*(n-1)/2; memset(map,INT_MAX,sizeof(map)); while(T--) { scanf("%d %d %d",&i,&j,&dis); map[i][j]=map[j][i]=dis; } memset(used,0,sizeof(used)); printf("%d\n",Prim(n)); } return 0;}
Kruskal:
#include <cstdio>#include <algorithm>using namespace std;struct node{ int b,e,dis;} s[5000];int n,m,father[101];bool cmp(node a,node b){ return a.dis < b.dis;}int find(int x){ return father[x]==x ? x : father[x]=find(father[x]);}int main(){ while(scanf("%d",&n),n) { m=n*(n-1)/2; for(int i=0; i<101; i++) father[i]=i; for(int i=0; i<m; i++) scanf("%d %d %d",&s[i].b,&s[i].e,&s[i].dis); sort(s,s+m,cmp); int sum=0; for(int i=0; i<m; i++) { int x=find(s[i].b); int y=find(s[i].e); if(x!=y) { father[y]=x; sum+=s[i].dis; } } printf("%d\n",sum); } return 0;}
0 0
- hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程
- hdu 1233 还是畅通工程
- hdu - 1233 - 还是畅通工程
- hdu 1233 还是畅通工程
- hdu 1233 还是畅通工程
- hdu 1233 还是畅通工程
- hdu 1233 还是畅通工程
- HDU 1233 还是畅通工程
- HDU-1233-还是畅通工程
- HDU-1233-还是畅通工程
- iOS判断机型
- 频繁Toast的解决办法
- Hadoop MapReduce 统计红楼梦出现次数最多的名字
- Agnostic Learning (不可知学习)
- 【Java】多态和动态绑定中的坑
- HDU 1233 还是畅通工程
- android组件之BroadcastReceiver
- 快速获取文件的行数
- CentOS环境下安装Apache+PHP+Mysql
- Contest 2016-5-7 A(HDU 5615)
- 大数据和云服务领域的我的思考(拙见)
- CodeForces 670C Cinema(排序,离散化)
- C#版 选择法、冒泡法、插入法和快速排序法分析与对比
- 多线程(四)