poj 2524 (并查集)
2024-10-20 00:47:42
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 ;
}
最新文章
- Codeforces Round 319 # div.1 &; 2 解题报告
- php中echo(),print(),print_r(),var_dump()间的区别
- html,body的关系
- .net core Entity Framework Core Code First 框架 分层开发
- bzoj3262: 陌上花开(树套树)
- ASP.NET MVC中的模型装配 封装方法 非常好用
- sql server 2008 登录 4064 错误解决办法
- makefile 分析 -- 内置变量及自动变量
- CSS中filter滤镜学习笔记
- 关于初学者上传文件到github的方法
- (转)走进JVM,浅水也能捉鱼
- ++i和i++哪个效率高?
- node.js平台下的mysql数据库配置及连接
- java日期转化
- Java线程池ThreadPoolExecutor使用和分析(一)
- 423. Reconstruct Original Digits from English(Medium)
- datagrid点删除,弹出一个确认和取消的消息框
- one or more multiply defined symbols found
- java基础 逻辑
- Linux(64) 下 Tomcat + java 环境搭建
热门文章
- Python Paramiko模块与MySQL数据库操作
- 防SQL注入代码(ASP版)
- Python之路【第十六篇续】Django进阶篇
- 您的应用静态链接到的 OpenSSL 版本有多个安全漏洞。建议您尽快更新 OpenSSL
- ASP.NET MVC Razor语法
- C语言strdup函数
- 关于Mysql错误:./bin/mysqld_safe --user=mysql&; [1] 32710 121003 16:40:22 mysqld_safe Logging to &#39;/var/log/mysqld.log&#39;. 121003 16:40:22 mysqld_s
- 分词工具ICTCLAS5.0使用心得
- Kali Linux中MySQL重置root密码
- 常见的几个angular.js的问题