hihoCoder#1098 最小生成树二·Kruscal算法
2015-04-06 21:10
155 查看
原题地址
以前没写过Kruscal算法,写了才知道原来比Prime算法简单多了。。。
并查集的应用太经典了!
代码:
以前没写过Kruscal算法,写了才知道原来比Prime算法简单多了。。。
并查集的应用太经典了!
代码:
#include <iostream> #include <cstdlib> using namespace std; #define MAX_EDGE 1000008 #define MAX_POINT 100008 struct Edge { int a; int b; int len; }; int mycmp(const void *a, const void *b) { Edge *pa = (Edge *) a; Edge *pb = (Edge *) b; return pa->len - pb->len; } int N, M; Edge e[MAX_EDGE]; int p[MAX_POINT]; int find(int i) { if (p[i] == i) return i; return p[i] = find(p[i]); } void merge(int i, int j) { int pi = find(i); int pj = find(j); p[pi] = pj; } int kruscal() { int res = 0; qsort(e, M, sizeof(Edge), mycmp); for (int i = 0; i < M; i++) { if (find(e[i].a) == find(e[i].b)) continue; res += e[i].len; merge(e[i].a, e[i].b); } return res; } int main() { scanf("%d%d", &N, &M); for (int i = 1; i <= N; i++) p[i] = i; for (int i = 0; i < M; i++) scanf("%d%d%d", &(e[i].a), &(e[i].b), &(e[i].len)); printf("%d\n", kruscal()); return 0; }
相关文章推荐
- 最小生成树二·Kruscal算法
- 最小生成树二·Kruscal算法
- hihocoder 最小生成树二·Kruscal算法
- hiho 27 最小生成树二·Kruscal算法
- #1098 : 最小生成树二·Kruscal算法
- 【Matrix-tree定理】【并查集】【kruscal算法】bzoj1016 [JSOI2008]最小生成树计数
- POJ 1789最小生成树(kruscal算法)
- poj1861&&zoj1542 Network ——最小生成树入门题_Kruscal算法
- poj1679 The Unique MST ——判断最小生成树是否唯一_kruscal算法
- hihoCoder 1098 最小生成树二·Kruscal算法
- 最小生成树 Prim、Kruscal算法 (以HDU 1863为例)
- 最小生成树算法---Kruscal算法和Prim算法(入门)
- Kruscal算法 并查集求解最小生成树
- poj2421 Constructing Roads ——最小生成树入门题_Kruscal算法
- [HihoCoder]#1098 : 最小生成树二·Kruscal算法
- 最小生成树-Kruscal算法
- hihoCoder 1098 : 最小生成树二·Kruscal算法
- 并查集 求解最小生成树 Kruscal算法
- hoj12616 Median Tree ——最小生成树入门题&&比赛残留题_Kruscal算法
- zoj 1203 最小生成树—kruscal算法