并查集初步应用,还不是很熟练。并查集两个主要函数:Union和Find。Union通常把两条不连通的支路使其连通;Find用来查找根节点,必要的要进行路径压缩。

大致题意:0号学生是默认的感染者,在M组团体中,如果出现了0号,则整个团体都是感染者。

样例:

Sample Input

100 4                        //第一行两个整数N,M,表示N个学生(已编号0~N-1),M个团体  (0 < N <= 30000,0 <= M <= 500)

2 1 2                        //以下M行,第一个数是该团体的人数K  后面是K个学生的编号

5 10 13 11 12 14

2 0 1

2 99 2

200 2

1 5

5 1 2 3 4 5

1 0

0 0

Sanple Output(输出每组案例的感染者数目)

4

1

1

 #include<iostream>
using namespace std; int node[],flag[];
int n,m,num; void Init(int n)//初始化
{
for(int i=;i<n;i++)
node[i]=i;
} int find(int x)//查找x的父节点
{
if(node[x]==x)//父节点是它本身
return x;
else//往上找
return node[x]=find(node[x]);
} void mix(int x,int y)//使x和y连通
{
x=find(x);
y=find(y);
node[x]=y;
} int main()
{
int i;
while((cin>>n>>m)&&n*n+m*m)
{
Init(n);
while(m--)
{
cin>>num;
for(i=;i<num;i++)
cin>>flag[i];
for(i=;i<num;i++)
mix(flag[i-],flag[i]);//把输入的各点连通
}
int c=;
for(i=;i<n;i++)
{
if(find(i)==find())//判断父节点是否与一号感染者相同
c++;
}
cout<<c<<endl;
}
return ;
}

2016HUAS_ACM暑假集训2B - The Suspects(感染者)的更多相关文章

  1. 2016HUAS_ACM暑假集训4F - 数论

    这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k ...

  2. 2016HUAS_ACM暑假集训4C - 递推

    题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...

  3. 2016HUAS_ACM暑假集训4A - 递推

    利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...

  4. 2016HUAS_ACM暑假集训4D - 计数,排列

    一个错排公式的基础应用. 大致题意:求n个数的错误排列方式.(每个都要错) 在这里先贴一下错排公式:D(1)=0:D(2)=1:D(n)=(n-1)*(D(n-1)+D(n-2)) 它的推导也非常有意 ...

  5. 2016HUAS_ACM暑假集训4M - 基础DP

    简单的0-1背包问题,大家都会做的.题意不想解释太多. 简述题目的案例及以几个关键 Sample Input 1                            //测试组数T 5 10     ...

  6. 2016HUAS_ACM暑假集训4K - 基础DP

    我不知道怎么用DP,不过DFS挺好用.DFS思路很明显,搜索.记录,如果刚好找到总价值的一半就说明搜索成功. 题目大意:每组6个数,分别表示价值1到6的物品个数.现在问你能不能根据价值均分. Samp ...

  7. 2016HUAS_ACM暑假集训4B - 递推

    这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...

  8. 2016HUAS_ACM暑假集训3G - 还是畅通工程

    最小生成树,题目简单.套的Prim模板,其他的题目比较有意义. Sample Input 3                             //村庄个数1 2 1               ...

  9. 2016HUAS_ACM暑假集训3F - Jungle Roads

    这个题目属于最小生成树问题,可以用Prim,也可以用Kruskal(还没试).题意简单直接,给你一个图,求出它最小生成树的权值. 题目最有趣的地方就是图的顶点是字母,稍微处理一下就好了. Sample ...

随机推荐

  1. wamp环境下phpmyadmin拒绝访问

    You don't have permission to access /phpmyadmin on this server. 找到 alias/phpmyadmin.conf  的配置文件 将 &l ...

  2. fsimage 和 edits log

    standby NN每隔一段时间(由参数dfs.ha.tail-edits.period决定,默认是60s)去检查Journal node上新的Edits log文件. standby NN每隔一段时 ...

  3. 安卓设备通过USB接口读取UVC摄像头权限问题

    libusb for Android================== Building:--------- To build libusb for Android do the following ...

  4. springmvcIntercept(拦截器)

    1.创建拦截器 public class MyIntercept implements HandlerInterceptor { @Override public void afterCompleti ...

  5. CSS3中媒体查询,更换样式表

    <link rel="stylesheet" href="css/1.css" media="(min- width:600px)"& ...

  6. guava学习--Ordering

    转载:http://www.cnblogs.com/peida/p/Guava_Ordering.html Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering ...

  7. MVC模式与三层架构的区别

    之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) ...

  8. 什么是Angular? 我们为什么要学习它?

    在我更新Ionic的时候有人问我什么是 Angular,我们为什么要学习它啊?这个是我的疏忽了,在没有告诉你们什么是 Angular 的时候就让大家着手去学习 Ionic .那么今天就让我们认识一下什 ...

  9. ubuntu arm妙算加载cp210x驱动

    在妙算TK1上安装ros后,插上usb串口竟然没有驱动 无奈装 从http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers. ...

  10. uboot make xxx_config与make的过程分析

    一直很想捋清楚make xxx_config,make 的执行过程. 在uboot的makefile中有这样的话: %_config::unconfig @$(MKCONFIG) -A $(@:_co ...