[原]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 ...
随机推荐
- git创建和删除远程分支
问题描述: 使用git创建和删除远程分支 问题解决: (1)git创建本地分支 注: 如上所示,使用命令 git branch -a ...
- 【POJ】【2891】Strange Way to Express Integers
中国剩余定理/扩展欧几里得 题目大意:求一般模线性方程组的解(不满足模数两两互质) solution:对于两个方程 \[ \begin{cases} m \equiv r_1 \pmod {a_1} ...
- NYOJ-205 求余数 AC 分类: NYOJ 2014-02-02 12:30 201人阅读 评论(0) 收藏
这题目看一眼以为难度评级出错了,只是一个求余数的题目,,后来才发现,位数小于百万位,,,我还以为是大小小于百万呢,所以借鉴了另一大神的代码, 用大数,重点是同余定理: (a+b)mod m=((a m ...
- xcodebuild和xcrun实现自动打包iOS应用程序
随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...
- 对话机器学习大神Yoshua Bengio(上)
Yoshua Bengio教授(个人主页)是机器学习大神之一,尤其是在深度学习这个领域.他连同Geoff Hinton老先生以及 Yann LeCun(燕乐存)教授,缔造了2006年开始的深度学习复兴 ...
- [百度空间] [原]android下的各种坑
一堆so文件安装不正确: apk里面都是全的, 但是安装完后/data/data/$pkg/lib下面就没有 google了好长时间没有结果.最后发现是因为没库有加lib前缀(当时想了一下觉得不加更好 ...
- POJ 1995
#include <iostream> using namespace std; long long power(long long a, long long b, long long m ...
- Android loader 详解
装载器从android3.0开始引进.它使得在activity或fragment中异步加载数据变得简单.装载器具有如下特性: 它们对每个Activity和Fragment都有效. 他们提供了异步加载数 ...
- Javascript format方法
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- PHP 字符串函数--替换、正则匹配等
名称 支持正则 特 点 备注 str_replace X 字符串替换函数,大小写敏感 str_ireplace X 字符串替换函数,大小写不敏感,支持数组式批量替换 感谢网友franci, 提醒添 ...