hrbustOJ 最小生成树问题(kruskal)
2012-04-15 08:10
429 查看
View Code
/* Name: 最小生成树(kruskal) Copyright: Author: Try86 Date: 15/04/12 08:01 Description: */ #include <cstdio> #include <cstdlib> #include <iostream> using namespace std; const int N = 10005; const int M = 50005; int p , sum; struct edge { int u; int v; int w; }e[M]; int cmp(const void *a, const void *b) { return (*(edge *)a).w - (*(edge *)b).w; } void init(int vs) { for (int i=1; i<=vs; ++i) p[i] = i; return ; } int find(int v) { if (p[v] != v) p[v] = find(p[v]); return p[v]; } int join(edge e) { int x, y; x = find(e.u); y = find(e.v); if (x != y) { ++sum; p[x] = y; return e.w; } return 0; } int kruskal(int es, int vs) { int ans = 0; init(vs); qsort(e, es, sizeof(edge), cmp); sum = 1; for (int i=0; i<es; ++i) { ans += join(e[i]); if (sum == vs) return ans; } return -1; } int main() { int n, m; while (scanf("%d%d", &n, &m) != EOF) { for (int i=0; i<m; ++i) scanf ("%d%d%d", &e[i].u, &e[i].v, &e[i].w); int ans = kruskal(m, n); printf ("%d\n", ans); } return 0; }
相关文章推荐
- NYOJ 38布线问题(并查集)(最小生成树Kruskal)
- BZOJ-1196 公路修建问题 最小生成树Kruskal+(二分??)
- 畅通工程之最低成本建设问题(最小生成树(Kruskal)+并查集)
- NYOJ 38 布线问题(最小生成树--kruskal)
- 最小生成树问题(Kruskal 算法)(克鲁斯卡尔)
- NYOJ 38 布线问题 (最小生成树 Kruskal)
- nyoj 38 布线问题【最小生成树 Kruskal】
- kruskal最小生成树问题
- 练习赛2(补题)问题 G: 建设电力系统【最小生成树kruskal模板题】
- nyist 38 布线问题(最小生成树kruskal)
- (最小生成树问题:Prim,Kruskal)村村通公路
- [Ybt 1349] 最优布线问题 ——最小生成树[Kruskal]
- NYOJ 38 布线问题 最小生成树 prim与Kruskal
- nyoj 38 布线问题(kruskal 最小生成树)
- Prim && Kruskal 生成MST(最小生成树)及最短路径问题
- BZOJ-1196 公路修建问题 最小生成树Kruskal+(二分??)
- 布线问题 n 38 最小生成树
- Matlab生成Kruskal最小生成树
- POJ 3723 Conscription(最小生成树-Kruskal)
- 图的最小生成树(Prim、Kruskal)