布线问题 n 38 最小生成树
2011-12-07 00:06
477 查看
楼间的最小生成树加外界的最小进入就行
#include<stdio.h> #include<stdlib.h> #include<limits.h> typedef struct Tedge { int from, to; int dist; }Edge, * EEE; Edge edge[250000]; int count; int fa[600]; int find(int x) { if(x == fa[x]) return x; fa[x]=find(fa[x]); return(fa[x]); } int cmp(const void *a, const void *b) { return (*(EEE)a).dist > (*(EEE)b).dist ? 1 : -1; } int main() { int n; scanf("%d", &n); while(n--) { int v, e; int i; scanf("%d%d", &v, &e); for(i=0;i<e;i++) scanf("%d%d%d", &edge[i].from, &edge[i].to, &edge[i].dist); count = i; int min = INT_MAX; for(i=0;i<v;i++) { int a; scanf("%d", &a); if(a < min) min = a; } qsort(edge, count, sizeof(edge[0]), cmp); for(i=0;i<=v;i++) fa[i] = i; int num=0, sum=min; for(i=0;i<count;i++) { if(find(edge[i].from) != find(edge[i].to)) { fa[find(edge[i].from)] = find(edge[i].to); sum += edge[i].dist; num++; if(num == v-1) break; } } printf("%d\n", sum); } return 0; }
相关文章推荐
- NYOJ-38 布线问题(图论,最小生成树,Prime)
- NYOJ - 38 - 布线问题 ( 最小生成树 Kruscal )
- 最小生成树——并查集+Kruskal(NYOJ 38 布线问题)
- nyoj 38 布线问题【最小生成树】
- NYOJ 38-布线问题:最小生成树
- NYOJ 38-布线问题:最小生成树
- 布线问题 n 38 最小生成树
- HDOJ 题目38 布线问题(最小生成树)
- nyoj 38 布线问题(最小生成树 kruskal算法)
- nyoj 38 布线问题(最小生成树)
- nyoj--38 布线问题(最小生成树)
- NYOJ 38 布线问题 最小生成树 prim与Kruskal
- 布线问题 38 (最小生成树 prim)
- nyoj 38 布线问题【最小生成树 Kruskal】
- NYOJ 题目38 布线问题 (最小生成树 普里姆算法)
- Nyoj 38 布线问题[最小生成树(Prim&&Kruscal)]
- NYOJ 38 布线问题(最小生成树--kruskal)
- NYOJ 38最小生成树布线问题
- NYOJ 38 布线问题(带权最小生成树,并查集)
- NY--38 -- 布线问题 [prim算法求最小生成树]