HDU-1233(还是通畅工程) Kruskal
2018-03-11 20:31
204 查看
HDU-1233
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define m n*(n-1)/2 using namespace std; const int maxn = 205; struct Edge{ int from, to; int value; }edges[maxn*(maxn-1)]; int UF[maxn]; int n; bool cmp(Edge e1, Edge e2) { return e1.value < e2.value; } int find(int t) { return t == UF[t] ? t : find(UF[t]); } int Union(int a, int b, int ans, int idx) { int x = find(a); int y = find(b); if(x != y){ UF[y] = x; ans += edges[idx].value; } return ans; } void readin() { for(int i = 0; i < m; ++i) { scanf("%d%d%d", &edges[i].from, &edges[i].to, &edges[i].value); } } void init() { for(int i = 0; i < maxn; ++i) UF[i] = i; } int Kruskal() { int ans = 0; init(); sort(edges, edges + m, cmp); for(int i = 0; i < m; ++i) { ans = Union(edges[i].from, edges[i].to, ans, i); } return ans; } int main() { while(scanf("%d", &n) != EOF && n) { readin(); printf("%d\n", Kruskal()); } }
相关文章推荐
- 图论 生成树 HDU 1233 还是畅通工程 Kruskal
- [HDU](1233)还是通畅工程 ---最小生成树(图)
- hdu 1233 还是畅通工程(prim||kruskal)
- HDU-#1233 还是畅通工程(Prim & Kruskal)
- HDU 1233 还是畅通工程(Kruskal)
- HDU 1233 还是畅通工程(Kruskal)
- HDU 1233 还是畅通工程(Kruskal)
- HDU 1233 还是畅通工程 (最小生成树 Kruskal)
- 【裸MST:prim+邻接矩阵 / Kruskal+邻接表】hdu 1233 还是畅通工程
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- 【最小生成树+kruskal】杭电 hdu 1233 还是畅通工程
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- HDU 1233-还是畅通工程(经典的最小生成树, Kruskal和prim算法)
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- hdu 1233 还是畅通工程 kruskal
- hdu 1233 还是畅通工程 kruskal
- HDU:1233 还是畅通工程(kruskal)
- hdu 1233 还是畅通工程(prim和kruskal最小生成树)
- hdu1233 - 还是通畅工程(最小生成树)
- HDU - 1233 还是畅通工程(Kruskal - MST)