http://poj.org/problem?id=2524

题意:在一所学校里面的人,都有宗教信仰,不过他们的宗教信仰有可能相同有可能不同,但你又不能直接去问他们,但你可以问他们和谁是同一个宗教。通过n次询问,求这个学校最多有多少种宗教信仰。

思路:一个并查集的水题。首先假设这个学校的人全都是不同的信仰。然后再去询问,如果两个人的信仰是相同的,合并这两个人且ans--。最后减出来的ans就是答案。

 #include <stdio.h>
#include <iostream>
#include <string.h>
#define l 50005 int ans,belg[l]; int Find(int x)
{
int _x=x,_b;
while(_x!=belg[_x])
{
_x=belg[_x];
}
while(x!=belg[x])
{
_b=belg[x];
belg[x]=_x;
x=_b;
}
return _x;
} int unio(int x,int y)
{
int root1=Find(x);
int root2=Find(y);
if(root1!=root2) {belg[root1]=root2;return ;} //这里是用来判断这两个人的信仰是否相同,如果之前不同的话,那么合并且ans--。
return ;
} int main()
{
// freopen("in.txt","r",stdin);
int m,n,a,b,cas=;
while(scanf("%d%d",&m,&n),m||n)
{
for(int i=;i<=m;i++)
belg[i]=i;
ans=m;
for(int i=;i<n;i++)
{
scanf("%d%d",&a,&b);
if(unio(a,b)) ans--;
}
printf("Case %d: %d\n",++cas,ans);
}
return ;
}

最新文章

  1. Codeforces Round 319 # div.1 &amp; 2 解题报告
  2. php中echo(),print(),print_r(),var_dump()间的区别
  3. html,body的关系
  4. .net core Entity Framework Core Code First 框架 分层开发
  5. bzoj3262: 陌上花开(树套树)
  6. ASP.NET MVC中的模型装配 封装方法 非常好用
  7. sql server 2008 登录 4064 错误解决办法
  8. makefile 分析 -- 内置变量及自动变量
  9. CSS中filter滤镜学习笔记
  10. 关于初学者上传文件到github的方法
  11. (转)走进JVM,浅水也能捉鱼
  12. ++i和i++哪个效率高?
  13. node.js平台下的mysql数据库配置及连接
  14. java日期转化
  15. Java线程池ThreadPoolExecutor使用和分析(一)
  16. 423. Reconstruct Original Digits from English(Medium)
  17. datagrid点删除,弹出一个确认和取消的消息框
  18. one or more multiply defined symbols found
  19. java基础 逻辑
  20. Linux(64) 下 Tomcat + java 环境搭建

热门文章

  1. Python Paramiko模块与MySQL数据库操作
  2. 防SQL注入代码(ASP版)
  3. Python之路【第十六篇续】Django进阶篇
  4. 您的应用静态链接到的 OpenSSL 版本有多个安全漏洞。建议您尽快更新 OpenSSL
  5. ASP.NET MVC Razor语法
  6. C语言strdup函数
  7. 关于Mysql错误:./bin/mysqld_safe --user=mysql&amp; [1] 32710 121003 16:40:22 mysqld_safe Logging to &#39;/var/log/mysqld.log&#39;. 121003 16:40:22 mysqld_s
  8. 分词工具ICTCLAS5.0使用心得
  9. Kali Linux中MySQL重置root密码
  10. 常见的几个angular.js的问题