zoj 2966 Build The Electric System ( prim || kruskal~ )
2010-09-16 14:55
190 查看
做的这几道基本都是一样的。。。。
prim纠结死了,SE了好多次。。。后来发现是要在赋值的时候 map[x][y] = map[y][x] = len; 原来忘了把两条路都弄上,只弄了一个。。。
kruskal很顺当。。。我应该学学党那种优先队列的方法了。。。
PRIM
kruskal
prim纠结死了,SE了好多次。。。后来发现是要在赋值的时候 map[x][y] = map[y][x] = len; 原来忘了把两条路都弄上,只弄了一个。。。
kruskal很顺当。。。我应该学学党那种优先队列的方法了。。。
PRIM
#include <stdio.h> #include <stdlib.h> #include <iostream> #define N 510 using namespace std; int map ,hash ,dis ,start,n,e; void input() { int i,j,x,y,len; cin >> n >> e; for(i=0; i<n; i++) { for(j=0; j<n; j++) map[i][j] = INT_MAX; } for(i=0; i<e; i++) { cin >> x >> y >> len; map[x][y] = map[y][x] = len; } } void prim() { int i,j,min,sum,now; for(i=1; i<=n; i++) { dis[i] = INT_MAX; hash[i] = 0; } now = 0; dis[now] = 0; hash[now] = 1; for(j=1; j<=n; j++) { for(i=0; i<n; i++) if( !hash[i] && map[now][i] < dis[i] ) dis[i] = map[now][i]; min = INT_MAX; for(i=0; i<n; i++) if(!hash[i] && dis[i] < min ) min = dis[now = i]; hash[now] = 1; } sum = 0; for(i=0; i<n; i++) sum += dis[i]; cout << sum << endl; } int main(void) { int ncases; cin >> ncases; while( ncases-- ) { input(); prim(); } return 0; }
kruskal
#include <stdio.h> #include <stdlib.h> #include <iostream> #define N 510 using namespace std; int n,p,pre ,e; struct C { int x,y,len; }city[N * (N - 1) / 2]; typedef struct C NODE; void input() { int i; cin >> n >> e; for(i=0; i<e; i++) { cin >> city[i].x >> city[i].y >> city[i].len; } } int cmp(const void *a,const void *b) { return ((NODE*)a)->len > ((NODE*)b)->len ? 1 : -1; } int find(int x) { while(x!=pre[x]) x = pre[x]; return x; } void kruskal() { int i,sum = 0,a,b; qsort( city, e, sizeof(NODE), cmp); for(i=0; i<n; i++) pre[i] = i; for(i=0; i<e; i++) { a = find( city[i].x ); b = find( city[i].y ); if( a!= b ) { sum += city[i].len; pre[b] = a; } } cout << sum << endl; } int main(void) { int ncases; cin >> ncases; while( ncases-- ) { input(); kruskal(); } return 0; }
相关文章推荐
- ZOJ 1372 / POJ 1287 Networking ( kruskal+prim )
- ZOJ 1914 Prim Kruskal
- ZOJ 1914 Arctic Network (kruskal + prim )
- zoj 1586 QS Network【最小生成树 kruskal && prim】
- zoj 1406 最小生成树 kruskal 和 prim用法
- zoj 1406 Jungle Roads(Prim || Kruskal)
- zoj 2966 Build The Electric System【最小生成树 Kruskal && prim】
- zoj 1914 || poj 2349 Arctic Network【最小生成树 kruskal && prim】
- zoj 1203 Swordfish 【最小生成树 kruskal && prim】
- zoj 1372 || poj 1287 Networking ( prim || kruskal ~)
- ZOJ 2048 Highways 最小生成树 Kruskal && Prim
- zoj 2296(Build The Electric System)Kruskal || Prim
- zoj 2326 Tangled in Cables【最小生成树 kruskal && prim】
- Prim和Kruskal最小生成树
- 最小生成树(prim&&kruskal)
- 最小生成树两个重要的算法:Prim 和 Kruskal
- HDU 1863 畅通工程 最短路径问题 (Kruskal&Prim)
- hdu 1233 还是畅通工程(最小生成树,prim,kruskal)
- Prim zoj 1372 Networking
- poj 1251 prim or kruskal