初次利用并查集解决问题
2016-12-10 12:37
197 查看
这是我第一次学习幷查集,为了解决无向图中两个点是否在一个连通图的问题。由于数据比较大,直接搜索很容易超时,时间复杂度比较高。幷查集相对而言就好的多了。一下是代码
// using disjoint algorithm
#include <iostream>
#include <cstdio>
using namespace std;
int f[100001];
int find(int x) {
//find root
if (f[x] == x) return x; //return root
// find parent and compress road
f[x] = find(f[x]);
return f[x];
}
int main() {
int x, y;
for (int i = 0; i <= 100000; i++) f[i] = i;
while (scanf("%d%d", &x, &y) != EOF) {
if (find(x) != find(y)) { // different root
printf("%d %d\n", x, y);
f[find(x)] = y; // union set
}
}
}
// using disjoint algorithm
#include <iostream>
#include <cstdio>
using namespace std;
int f[100001];
int find(int x) {
//find root
if (f[x] == x) return x; //return root
// find parent and compress road
f[x] = find(f[x]);
return f[x];
}
int main() {
int x, y;
for (int i = 0; i <= 100000; i++) f[i] = i;
while (scanf("%d%d", &x, &y) != EOF) {
if (find(x) != find(y)) { // different root
printf("%d %d\n", x, y);
f[find(x)] = y; // union set
}
}
}
相关文章推荐
- Fix a Tree 利用并查集合并树,解决树中存在环的问题
- 【数据结构】之利用并查集解决食物链问题
- (转载)利用 .NET 框架简化发布和解决 DLL Hell 问题
- 利用Observer模式解决组件间通信问题
- Web程序中利用web.config解决无法输出excel页面的问题
- sql server 2005 中的利用ROW_NUMBER() 解决数据分页问题
- 利用sprint设置解决中文显示问题,web.xml
- 如何解决移动应用中 PeekMessage 调用的资源利用问题
- 利用.NET的XML序列化解决系统配置问题
- Web程序中利用web.config解决无法输出excel页面的问题
- Web程序中利用web.config解决无法输出excel页面的问题
- 利用触发器和INSERT INTO ...SELECT...解决Oracle 数据匹配问题
- 利用.NET的XML序列化解决系统配置问题
- 如何利用网络解决技术问题
- 利用errorstack event解决问题
- 利用WebBrowser彻底解决Web打印问题
- 利用netBeans开发JSP+javaBeans总是出错问题的解决
- 利用动态SQL解决排序问题
- 利用errorstack event解决问题
- 利用扩展ActionServlet,解决中文编码问题