hdu 1232 畅通工程(并查集的应用)
来源:互联网 发布:英克软件怎么样 编辑:程序博客网 时间:2024/04/28 20:40
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232
并查集在之前博客中写过了,便不赘述了。
在并查集的基础上在处理好两点即可:
1.怎样将城镇加到对应的城镇群
2.怎样得到单独的城镇群的数量
详见代码:
//看并查集#include<iostream>#include<cstring>#include<string>#include<cstdio>using namespace std;int pre[1000 + 10];bool root[1000 + 10];int Find(int x)//并查集{ int p = x; while (pre[p] != p) p = pre[p]; int i = x, j; while (pre[i] != p)//路径压缩 { j = pre[i]; pre[i] = p; i = j; } return p;}void join(int u, int v)//根部连接u,v 将城镇加到相应的城镇群,只需处理根节点即可{ int fu = Find(u), fv = Find(v); if (fu != fv) pre[fv] = fu; return;}int main(){ int N, M; while (cin >> N&&N) { int ans = 0; memset(root, 0, sizeof(root)); cin >> M; for (int i = 0; i <= N; i++) pre[i] = i; int u, v; for (int i = 1; i <= M; i++) { scanf("%d%d", &u, &v); join(u, v); } for (int i = 1; i <= N; i++)//标记根即独立的城镇群 { root[Find(i)] = true; } for (int i = 1; i <= N; i++)//得到独立的城镇群的个数 { //cout << root[i] << " "; if (root[i]) ans++; } cout << ans-1 << endl; } return 0;}
0 0
- hdu 1232 畅通工程(并查集的应用)
- HDU 1232畅通工程(并查集经典应用)
- HDU-1232 畅通工程(并查集的使用)
- HDU 1232 畅通工程 并查集简单应用
- hdu 1232 畅通工程 并查集
- HDU 1232 畅通工程 并查集
- HDU 1232 畅通工程 (并查集)
- hdu 1232畅通工程 并查集
- hdu 1232 畅通工程 并查集
- HDU--1232--畅通工程--并查集
- 畅通工程-并查集-hdu 1232
- hdu 1232 畅通工程并查集
- HDU 1232 畅通工程 并查集
- hdu 1232 畅通工程 并查集
- hdu 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- HDU 1232 畅通工程(并查集)
- HDU 1232 畅通工程 并查集
- 华为荣耀7“耗电门”始末,北研所兄弟们的双年终奖还有吗?
- 九度 Online Judge 算法 刷题 题目1369:字符串的排列
- 左儿子右兄弟Trie UVA 11732 strcmp() Anyone?
- 最高分数记录
- Say Cheese
- hdu 1232 畅通工程(并查集的应用)
- Median of two sorted arrays
- 最大漂亮度
- 1086. Tree Traversals Again (25)
- HDOJ-4324-Triangle LOVE(拓扑排序)
- NoRepeatInteger
- 最小M段和问题
- NoRepeatNoSe
- Java构造和解析Json数据的两种方法详解