并查集最简单应用_不要抽烟
2014-12-05 11:39
183 查看
现在初中生高中生竟然开始抽烟了,真是太不像话了,不过作为一个无奸不商的烟草商,
小白菜已经瞄准这块商机无限的市场了。他知道在某个学校里有 n(5 <= n <= 50000)个学
生,可人家毕竟是学生,直接询问他抽什么烟不太好,学生们也不愿意说,真烦躁。不过小
白菜想到了一个办法,就是每次抓两个人来询问是不是抽同一种烟。每次他都会记下回答是
yes 的两个学生,一共记了 q(2 <= q <= n*(n- 1)/2)对学生。现在小白菜捧着一大堆数据
来找你,他不需要知道每个人抽什么烟,只需要知道有几种烟能卖到这个学校,你能解决这
个难题吗? ★数据输入
每组数据的开头包含两个整形 n(5 <= n <= 50000)和 q(2 <= q <= n*(n- 1)/2),接下
来跟着 q 行,每行为两个学生的 ID。 ★数据输出
输出共有多少种的烟即可
5 2
1 2
4 5
3
1.就是求多少个集合
2,路径压缩,遍历n个点的算法时间复杂度:O(nA(n)) A(n)<=4 ,
小白菜已经瞄准这块商机无限的市场了。他知道在某个学校里有 n(5 <= n <= 50000)个学
生,可人家毕竟是学生,直接询问他抽什么烟不太好,学生们也不愿意说,真烦躁。不过小
白菜想到了一个办法,就是每次抓两个人来询问是不是抽同一种烟。每次他都会记下回答是
yes 的两个学生,一共记了 q(2 <= q <= n*(n- 1)/2)对学生。现在小白菜捧着一大堆数据
来找你,他不需要知道每个人抽什么烟,只需要知道有几种烟能卖到这个学校,你能解决这
个难题吗? ★数据输入
每组数据的开头包含两个整形 n(5 <= n <= 50000)和 q(2 <= q <= n*(n- 1)/2),接下
来跟着 q 行,每行为两个学生的 ID。 ★数据输出
输出共有多少种的烟即可
5 2
1 2
4 5
3
1.就是求多少个集合
2,路径压缩,遍历n个点的算法时间复杂度:O(nA(n)) A(n)<=4 ,
#include<cstdio> #include<iostream> using namespace std; const int SIZE=50010; bool vis[SIZE]; int parent[SIZE]; void Init(int size){ for(int e=1;e<=size;++e){ parent[e]=e; } } int find(int e) { int i,j=e; while(parent[j]!=j)j=parent[j]; while(j!=e) { i=parent[e]; parent[e]=j; e=i; } return j; } int main() { int n,q,i,x,y; scanf("%d %d",&n,&q); Init(n); for(i=0;i<q;++i){ scanf("%d %d",&x,&y); x=find(x),y=find(y); parent[y]=x; } int cnt=0; int rroot; for(i=1;i<=n;++i){ rroot=find(i); if(!vis[rroot]){ cnt++; vis[rroot]=true; } } printf("%d\n",cnt); }
相关文章推荐
- POJ 2236 Wireless Network 【并查集的简单应用 判断是否在同一连通分量】
- POJ 2236 Wireless Network 【并查集的简单应用 判断是否在同一连通分量】
- RQNOJ36 数石子 并查集 简单应用
- uva 10158 War(并查集的简单应用)
- Ubiquitous Religions(并查集的简单应用)
- poj 1611 The Suspects 初级->数据结构->简单并查集的应用
- 并查集的简单应用——HDU
- poj 1611 简单并查集的应用
- nyoj 38 简单并查集的应用&最小生成树
- 并查集及其简单应用:优化kruskal算法
- POJ 2492 A Bug's Life【并查集的简单应用同类的判断】
- poj 2236 Wireless Network (简单的并查集应用)
- HDU--1232 -- 畅通工程 [并查集最简单应用]
- poj 1611 简单并查集的应用
- hdoj 1272 小希的迷宫 又一个并查集的简单应用
- POJ 1988 Cube Stacking【并查集的简单应用 堆木块】
- hdu 3038 How Many Answers Are Wrong【并查集的简单应用】
- hdu1213 How Many Tables 并查集的简单应用
- HDU 2818&&POJ 1988 并查集简单应用
- hdu 1213 How Many Tables(并查集的简单应用)