并查集 之 CODE[VS] 1073 家族
2015-12-13 18:09
344 查看
/* 并查集 */
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstddef> #include <iterator> #include <algorithm> #include <string> #include <locale> #include <cmath> #include <vector> #include <cstring> #include <map> #include <utility> #include <queue> #include <stack> #include <set> #include <functional> using namespace std; typedef pair<int, int> PII; const int INF = 0x3f3f3f3f; const int modPrime = 3046721; const double eps = 1e-9; const int MaxN = 5010; const int MaxM = 5010; int N, M, P; /******************************************/ // 并查集:Union-Find Sets int ftr[MaxN]; int rnk[MaxN]; void ufsIni(int n) { for (int i = 0; i <= n; ++i) { ftr[i] = i; } } int ufsFind(int x) { if (x == ftr[x]) { return x; } return ftr[x] = ufsFind(ftr[x]); } void ufsUnite(int x, int y) { x = ufsFind(x); y = ufsFind(y); if (x == y) { return; } if (rnk[x] < rnk[y]) { ftr[x] = y; } else { ftr[y] = x; if (rnk[x] == rnk[y]) { ++rnk[x]; } } } bool ufsSame(int x, int y) { return (ufsFind(x) == ufsFind(y)); } /******************************************/ void Solve() { ufsIni(N); int x, y; for (int i = 0; i < M; ++i) { scanf("%d %d", &x, &y); ufsUnite(x, y); } for (int i = 0; i < P; ++i) { scanf("%d %d", &x, &y); if (ufsSame(x, y)) { printf("Yes\n"); } else { printf("No\n"); } } } int main() { #ifdef HOME freopen("in", "r", stdin); //freopen("out", "w", stdout); #endif scanf("%d %d %d", &N, &M, &P); Solve(); #ifdef HOME cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl; _CrtDumpMemoryLeaks(); #endif return 0; }
相关文章推荐
- 20135220谈愈敏-信息安全系统设计基础第十二周学习总结
- POJ1753——Robot Motion
- css样式大全(整理版)
- spring MultiActionController 简单配置
- Cannot convert value of type [com.sun.proxy.$Proxy11 implementing com.xuyp.managize.service.IBaseSer
- VMware Workstation9安装Mac OS X10.9系统
- webrtc 它android与PC互通
- 《Android源码设计模式解析》读书笔记——Android中你应该知道的设计模式
- 一个通用的事件监听函数(转自寒冬winter大神的博客)
- 类的内存分配情况
- 远程调试Hadoop
- 第四周项目5-猴子选大王
- org.hibernate.NonUniqueResultException: query did not return a unique result: 2
- EasyDarwin EasyClient开源流媒体播放器,支持多窗口显示
- 我有三年推广兰亭
- EasyDarwin EasyClient开源流媒体播放器,支持多窗口显示
- Linux Kernel中的数据结构----树
- light oj 1017 - Brush (III) (dp)
- ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案
- typedef VOID (* (converters[2]) )(INT);