[原]poj-2524(裸并查集)
题目链接:
http://poj.org/problem?id=2524
题意: n个人,m对人宗教相同,输出一共有多少个不同的宗教。
代码如下:
#include<iostream>
#include<cstdio>
using namespace std; #define M 500100
int par[M];
int h[M];
int n, m; void init(int a)
{
for(int i = 1; i <= a; i++)
{
par[i] = i;
h[i] = 0;
}
}
int Find(int a)
{
if(par[a] != a)
{
return par[a] = Find(par[a]);
}
else return a;
}
void Union(int a,int b)
{
a = Find(a);
b = Find(b);
if(a == b) return;
else
{
if(h[a] > h[b]) par[b] = a;
else
{
if(h[a] == h[b]) h[b]++;
par[a] = b;
}
}
} int main()
{
int cases = 1;
while(scanf("%d%d",&n,&m) == 2)
{
if(n == 0) break;
init(n);
int Count = 0;
for(int i = 0; i < m; i++)
{
int a,b;
scanf("%d%d",&a,&b);
Union(a,b);
}
for(int i = 1; i <= n; i++)
{
if(par[i] == i) Count++; //自己是根节点的是一类宗教
}
cout<<"Case "<<cases++<<": "<<Count<<endl;
}
return 0;
}
之前wa了好多次,原因是定义了一个visit[ ]数组来记录visit[ par[i] ]有没有被访问来记录宗教数,但忽略了节点可能不是直接连在根节点上的情况。。。Orz。。。。
[原]poj-2524(裸并查集)的更多相关文章
- poj 2524 (并查集)
http://poj.org/problem?id=2524 题意:在一所学校里面的人,都有宗教信仰,不过他们的宗教信仰有可能相同有可能不同,但你又不能直接去问他们,但你可以问他们和谁是同一个宗教.通 ...
- POJ 2524 (简单并查集) Ubiquitous Religions
题意:有编号为1到n的学生,然后有m组调查,每组调查中有a和b,表示该两个学生有同样的宗教信仰,问最多有多少种不同的宗教信仰 简单并查集 //#define LOCAL #include <io ...
- POJ 2524(并查集)
这道题多了一个检查是否包含所有元素 可以设一个cnt表示集合里的数量,再与外面比较 #include <cstdio> #include <iostream> #include ...
- POJ 2524 独一无二的宗教(裸并查集)
题目链接: http://poj.org/problem?id=2524 Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K ...
- 【POJ】The Suspects(裸并查集)
并查集的模板题,为了避免麻烦,合并的时候根节点大的合并到小的结点. #include<cstdio> #include<algorithm> using namespace s ...
- [POJ 2588]--Snakes(并查集)
题目链接:http://poj.org/problem?id=2588 Snakes Time Limit: 1000MS Memory Limit: 65536K Description B ...
- poj 1456 Supermarket - 并查集 - 贪心
题目传送门 传送点I 传送点II 题目大意 有$n$个商品可以销售.每个商品销售会获得一个利润,但也有一个时间限制.每个商品需要1天的时间销售,一天也只能销售一件商品.问最大获利. 考虑将出售每个物品 ...
- poj 2492(关系并查集) 同性恋
题目;http://poj.org/problem?id=2492 卧槽很前卫的题意啊,感觉节操都碎了, t组测试数据,然后n,m,n条虫子,然后m行,每行两个数代表a和b有性行为(默认既然能这样就代 ...
- poj 1182 (关系并查集) 食物链
题目传送门:http://poj.org/problem?id=1182 这是一道关系型并查集的题,对于每个动物来说,只有三种情况:同类,吃与被吃: 所以可以用0,1,2三个数字代表三种情况,在使用并 ...
- Poj(1182),种类并查集
题目链接:http://poj.org/problem?id=1182 再次熟练种类并查集,又积累点经验,和技巧,rank 0 2 1 先计算father[x] ,再更新rank[x]; #inclu ...
随机推荐
- Angular 2 Quickstart
写一个Angular 2的应用最基本的步骤概括为三步:写root组件,启动它(Boostrap),写index.html. 一些关于命名空间的基本知识 把所有代码放入一个立即调用函数中,通过传入一个空 ...
- Orchard中文学习视频录制完成
Orchard学习视频已登录百度传课: http://www.chuanke.com/3027295-124882.html http://pan.baidu.com/s/13zc0u 1.orcha ...
- Apache环境.htaccess伪静态301跳转(www与不带www)
一般而言,我们使用的301跳转就是WWW与不带WWW域名之间的跳转,用行话说就是权重要归一.对于我们使用Apache环境的来说其实相对nginx比较简单,因为只需要我们在网站根目录有.htaccess ...
- [工作记录] Android OpenGL ES: non-square texture - continue
previous: [工作记录] Android OpenGL ES 2.0: square texture not supported on some device recently I found ...
- HDU 2126 Buy the souvenirs (01背包,输出方案数)
题意:给出t组数据 每组数据给出n和m,n代表商品个数,m代表你所拥有的钱,然后给出n个商品的价值 问你所能买到的最大件数,和对应的方案数.思路: 如果将物品的价格看做容量,将它的件数1看做价值的话, ...
- 关于iOS7 上下黑条解决办法
解决办法 找到工程的targest->General->Launch Image Sourse OK 运行问题解决
- Activity学习(一)——状态转变
(转自:http://blog.csdn.net/flowingflying/article/details/6415323) Android很大的应用场景是手机,有一些应用具有特别的优先级别,例如电 ...
- POJ 3525 Most Distant Point from the Sea (半平面交向内推进+二分半径)
题目链接 题意 : 给你一个多边形,问你里边能够盛的下的最大的圆的半径是多少. 思路 :先二分半径r,半平面交向内推进r.模板题 #include <stdio.h> #include & ...
- Linux网络编程7——使用TCP实现双方聊天
思路 主线程负责发送消息,另一线程负责接收消息.服务端和客户端均是如此. 注意 当A方close掉用于通信的socket端口后,该端口是不会立即关闭的.因为此时可能B方的信息还没send完.因此,此时 ...
- Ibm-jQuery教程学习笔记
一.概述 1.虽然 jQuery 本身并非一门新的语言.但是,学习其语法有助于我们熟练.灵活地使用它.回顾下我们熟悉的 CSS 语法,不难发现 jQuery 的语法与 CSS 有相似之处. jQuer ...