POj 1611 The Suspects
时间:2022-05-08
本文章向大家介绍POj 1611 The Suspects,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意:将n个人分组,找出受感染的人有多少,当一个人感染,他所在的那一组均视为受感染。
分析:运用并查集将相关联的人都分到一个集合,然后判断每个人是否和0在同一个集合,若在则视为受感染,否则不是
#include<stdio.h>
const int MN=30010;
int father[MN],rank[MN],a[MN];
void init(int n)
{
for (int i=0;i<n;i++)
{
father[i]=i;
rank[i]=1;//这个竟然忘记了,导致wa了3,4次
}
}
int Find(int x)
{
int r=x;
while(r!=father[r])
{
r=father[r];
}
if(r!=x)
father[x]=r;
return r;
}
void Union(int x,int y)
{
if(x==y) return ;
if(rank[x]>rank[y]) rank[y]=x;
else
{
if(rank[x]==rank[y]) rank[x]++;
else rank[y]++;
father[x]=y;
}
}
int main()
{
int n,m,i,k,j,ans;
while(1)
{
scanf("%d%d",&n,&m);
if(n==0 && m==0) break;
init(n);
ans=1;//记录人数
for (i=0;i<m;i++)
{
scanf("%d",&k);
for (j=0;j<k;j++)
{
scanf("%d",&a[j]);
}
if(k==1) continue;
for (j=1;j<k;j++)//并集合
{
int x=Find(a[j-1]);
int y=Find(a[j]);
Union(x,y);
}
}
father[0]=Find(father[0]);
for (j=1;j<n;j++)//找出和0同在一集合的人数
{
father[j]=Find(father[j]);
if(father[0]==father[j]) ans++;
}
// int t1,t2;
// for (t1=0;t1<3;t1++)
// {
// printf("%d ",father[i]);
// }
printf("%dn",ans);
}
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux一行命令处理批量文件详解
- Linux中jar包启动和jar包后台运行的实现方式
- Linux下实现不活动用户登录超时后自动登出
- Centos7下nginx的安装与配置教程详解
- Linux上进行常用软件的配置方法
- Ubuntu系统下网络配置文件解析与说明
- 详解Centos7扩展磁盘空间(LVM管理)
- 设置ssh无密码登录linux服务器的方法
- linux特殊字符及其作用大全
- CentOS7搭建gerrit 代码审查服务方法
- CNS图表复现08—肿瘤单细胞数据第一次分群通用规则
- Gunicorn运行与配置方法
- 如何使用Linux文本操作命令ed进行提权nov5详解
- linux系统用户管理与grep正则表达式示例教程
- 在Linux中如何查找最大的10个文件方法汇总