hdu 1233 还是畅通工程(最小生成树,prim,kruskal)
来源:互联网 发布:yessuperstore淘宝 编辑:程序博客网 时间:2024/05/17 06:59
传送门
prim:
#include <stdio.h>#include <string.h>#define INF 99999999int map[101][101];int book[101],dis[101];int main(){ int i,j,k,n,m,t1,t2,t3,count,sum,min; while(scanf("%d",&n) && n) { m = n*(n-1)/2; count = sum = 0; memset(book,0,sizeof(book)); for(i = 1; i <= n; ++i) for(j = 1; j <= n; ++j) if(i == j) map[i][j] = 0; else map[i][j] = INF; for(i = 1; i <= m; ++i) { scanf("%d %d %d",&t1,&t2,&t3); if(t3 < map[t1][t2]) map[t1][t2] = map[t2][t1] = t3; } for(i = 1; i <= n; ++i) dis[i] = map[1][i]; book[1] = 1; ++count; while(count < n) { min = INF; for(i = 1; i <= n; ++i) if(!book[i] && dis[i] < min) { min = dis[i]; j = i; } ++count; book[j] = 1; sum += dis[j]; for(k = 1; k <= n; ++k) { if(!book[k] && dis[k] > map[j][k]) dis[k] = map[j][k]; } } printf("%d\n",sum); } return 0;}
kruskal:
#include <iostream>#include <algorithm>using namespace std;int u[5000],v[5000],w[5000],r[5000];int f[100];int getf(int x){return f[x] == x ? x : (f[x] = getf(f[x]));}int cmp(const int i, const int j) {return w[i] < w[j];}int main(){ int n,m; while(cin >> n && n) { m = n*(n-1)/2; for(int i = 0; i < m; ++i) cin >> u[i] >> v[i] >> w[i]; for(int i = 0; i <= n; ++i) f[i] = i; for(int i = 0; i < m; ++i) r[i] = i; sort(r,r+m,cmp); int sum = 0; for(int i = 0; i < m; ++i) { int e = r[i]; int x = getf(u[e]); int y = getf(v[e]); if(x != y) { sum += w[e]; f[x] = y; } } cout << sum << endl; } return 0;}
0 0
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
- hdu 1233 还是畅通工程(最小生成树,prim,kruskal)
- HDU 1233 还是畅通工程(最小生成树 Prim+Kruskal)
- hdoj 1233 还是畅通工程【最小生成树 kruskal && prim】
- HDOJ 1233 还是畅通工程 最小生成树 kruskal && prim
- HDU 1233 还是畅通工程(最小生成树Kruskal)
- HDU 1233 还是畅通工程 (最小生成树 Kruskal)
- HDU 1233 还是畅通工程(最小生成树kruskal)
- hdu 1233 还是畅通工程 (最小生成树,prim,优先队列,kruskal并查集)
- HDU 1233 还是畅通工程【最小生成树入门题,Kruskal算法+Prim算法】
- HDU 1233 还是畅通工程 最小生成树Kruskal算法和prim算法
- HDU 1233-还是畅通工程(经典的最小生成树, Kruskal和prim算法)
- hdu 还是畅通工程 (基础)(最小生成树)(Prim算法 && Kruskal算法)
- hdu1233还是畅通工程 最小生成树(prim或kruskal)
- hdu 1233 还是畅通工程(最小生成树Kruskal)
- hdu 1233 还是畅通工程(Prim最小生成树)
- hdu 1233 还是畅通工程--最小生成树prim
- HDU 1233 还是畅通工程---prim求最小生成树
- 勾股定理一日一证连载13
- 随笔:写给我深爱的球队
- JavaScript Array 原型方法 大盘点
- 多线程之_beginThreadex的用法
- 多线程之常用api
- hdu 1233 还是畅通工程(最小生成树,prim,kruskal)
- R语言绘制均线图SMA的交叉点
- Activity的生命周期和启动模式详解
- 帧动画使用详解
- 为什么写博客
- 更新software sources时异常停止后如何修复
- HDU2502 月之数
- 补间动画使用详解
- linux学习目标