HDU-1213 How Many Tables
2015-08-28 19:28
441 查看
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn = 1000 + 5; int t, n, m, ans; struct node { int op; int ed; } edge[maxn]; int root[maxn]; int Find(int x) { return x == root[x] ? x : root[x] = Find(root[x]); } int main() { scanf("%d", & t); while(t --) { scanf("%d %d", & n, & m); for(int i = 0; i < m; i ++) scanf("%d %d", & edge[i].op, & edge[i].ed); for(int i = 1; i <= n; i ++) root[i] = i; for(int i = 0; i < m; i ++) { int x = Find(edge[i].op); int y = Find(edge[i].ed); if(x != y) root[y] = x; } ans = 0; for(int i = 1; i <= n; i ++) if(root[i] == i) ans ++; printf("%d\n", ans); } return 0; }
题意:
有一群小孩比较现实嘛..只有认识才坐在一起,不跟陌生人坐。例如A知道B,B知道C。D知道E。所以ABC三个人一张桌子,DE两个人一张桌子。输入n(代表人数)m(接下来m行输入认识情况)。问需要几张桌子。
题解:
并查集。之后看看最后又几个集合。
相关文章推荐
- Unexpected namespace prefix "xmlns" found for tag LinearLayout——android开发之xml布局文件
- 使用Sublime Text搭建python调试环境
- C++静态成员函数小结(转)
- poj 1979 Red and Black(dfs水题)
- JAVA 反射练习 打印指定类名的所有信息
- struts2--基础
- js jquery版本的 金额千分位转换函数(非正则,效率极高)
- 周结
- 初识hadoop
- Xamarin iOS+MvvmCross TableCell add Button
- 《第五项修炼》,读后感
- HDU-1879 继续畅通工程
- Flex 布局相关用法
- 通过一个实例来学习进程间通信之----共享内存,以及使用信号量来保护
- Android核心服务解析篇(一)——下载Android源代码
- python
- 黑马程序员——Java 基础 正则表达式(复习)
- 12球问题/12硬币问题通解,以及引申的决策树/最优三叉树算法
- vim 主题(colorsheme)
- Xamarin IOS SearchBar 文本框设置