暑假集训(2)第二弹 ----- The Suspects(POJ1611)

B - The Suspects

Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:20000KB     64bit IO Format:%lld & %llu

Description

严重急性呼吸系统综合症( SARS), 一种原因不明的非典型性肺炎,从2003年3月中旬开始被认为是全球威胁。为了减少传播给别人的机会, 最好的策略是隔离可能的患者。

在Not-Spreading-Your-Sickness大学( NSYSU), 有许多学生团体。同一组的学生经常彼此相通,一个学生可以同时加入几个小组。为了防止非典的传播,NSYSU收集了所有学生团体的成员名单。他们的标准操作程序(SOP)如下:

一旦一组中有一个可能的患者, 组内的所有成员就都是可能的患者。

然而,他们发现当一个学生被确认为可能的患者后不容易识别所有可能的患者。你的工作是编写一个程序, 发现所有可能的患者。

Input

输入文件包含多组数据。

对于每组测试数据:

第一行为两个整数n和m, 其中n是学生的数量, m是团体的数量。0 < n <= 30000,0 <= m <= 500。

每个学生编号是一个0到n-1之间的整数,一开始只有0号学生被视为可能的患者。

紧随其后的是团体的成员列表,每组一行。

每一行有一个整数k,代表成员数量。之后,有k个整数代表这个群体的学生。一行中的所有整数由至少一个空格隔开。

n = m = 0表示输入结束,不需要处理。

Output

对于每组测试数据, 输出一行可能的患者。

Sample Input

100 4
2 1 2
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

Sample Output

4
1
1

问题分析:简单并查集的运用,维护一个size数组,在连接完所有的树后,查找0号学生所在树的根部,利用size数组即可得到答案;
#include "cstdio"
int size [30000];
int person[30000];
void pbegin(int n)
{
   for (int i=0;i<n;i++)
     {
         person[i] = i;
         size[i] = 1;
     }
}
int findroot (int u)
{
    while (u != person[u])
    {
        person[u] = person[person[u]];
        u = person[u];
    }
    return u;
}
void un(int x,int y)
{
    int a,b;
    a = findroot (x);
    b = findroot (y);
    if (a == b)
            return;
    if (size[a] > size[b])
    {
        person[b] = a;
        size[a] += size[b];
    }
    else
    {
        person[a] = b;
        size[b]+= size[a];
    }
}
int main()
{
    int n,m;
    int t,x,y;
    while (scanf ("%d%d",&n,&m) && (n || m))
    {
        pbegin(n);
        for (int i=0;i<m;i++)
        {
          if (m == 0)
           {
              printf ("1");
              continue;
          }
            scanf ("%d%d",&t,&x);
            for (int j=1;j<t;j++)
            {
                scanf ("%d",&y);
                    un(x,y);
                  x=y;
            }
        }
    printf ("%d\n",size[findroot(0)]);
    }
    return 0;
}
时间: 2024-10-14 04:57:54

暑假集训(2)第二弹 ----- The Suspects(POJ1611)的相关文章

暑假集训(4)第二弹 -----递推(hdu2254)

题意概括:上次小A在你的帮助下成功把贤者法阵的第一部分——三角分隔,现在他准备绘制法阵的第二部分——莫测矩形. 而他又遇到了一个问题,他不知道不同矩形到底有多少个. 秉持帮人帮到底,送佛送到西的基本法,你需要告诉他不同矩形的个数. 问题分析:假如矩形长度为1,宽度为m,则可构成矩形个数为m+m-1+.......+1,即m*(m+1)/2,如果长度为n那么只需再 乘以n*(n+1)/2; 得到公式 s=n*m*(n+1)*(m+1)/4. 1 #include "cstdio" 2 i

暑假集训(5)第二弹———湫湫系列故事——减肥记I(hdu4508)

问题描述:舔了舔嘴上的油渍,你陷在身后柔软的靠椅上.在德源大赛中获得优胜的你,迫不及待地赶到“吃到饱”饭店吃到饱.当你 正准备离开时,服务员叫住了你,“先生,您还没有吃完你所点的酒菜.”指着你桌上的一片狼藉,不过仍有很多残余“军力”的景象.你刚刚还红光满面的脸一下变成霜打的茄子.看着桌上仍留的美食,正犯愁.“我可以帮你解决它.”你看向旁边,发现她也便是德源大赛 的参赛者啾啾.还没来得及说谢谢.她便提出了条件,给出食物所含能量.幸福度以及摄入最大能量限制,如何在不超过最大能量限制的 情况下获得最大

暑假集训(4)第一弹 -----递推(Hdu2039)

题意梗概:fff团团员小A想退团了,不过要退团,他必须绘制出贤者法阵,以证明他有资格不受大fff之灵的监督 并退团,小A他现在要开始收集材料了,但是,他不清楚应该买多少份材料. 虽然你并不想帮他退团,但为了社会主义核心价值观观建设,你要告诉他需要买多少份材料,即N个三角形最多可 以把一个平面分成几个区域,就需要买几份材料. 问题分析:一个三角形时显然只能有2份,此时图形有3个顶点,即第二个三角形与第一个三角形最多只能有6个交 点,则有2+6 = 8份,由此类推得公式为 3*n*(n-1)+2.

暑假集训(5)第一弹——— Super Jumping! Jumping! Jumping!(hdu1087)

题意概括:在上次与娑殚的三次博弈中,你们都取得了胜利.便向娑殚提出要求,借助他的力量,传送到一个安全的地方. 你们的愿望达成了,不过,你和小A似乎失散了. 街上人来人往的特别热闹,每一个人的脸上都洋溢着幸福.“咕咕......"额,掏了掏身上的口袋,除你之外. “听说了嘛,德源街哪有个脑力比赛,据说优胜者可以去”吃到饱“饭店吃到饱,而且前三名还会有神秘奖品......" 这次,为了填饱......嗯,为了生存,你决定参加这个比赛,比赛要求你得到在给定的数字中得到最大循序上升序列和. 问

暑假集训(2)第五弹 ----- Who&#39;s in the Middle(poj2388)

G - Who's in the Middle Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description FJ is surveying his herd to find the most average cow. He wants to know how much milk this 'median

暑假集训练习赛题解

比赛链接:http://acm.nyist.net/JudgeOnline/problemset.php?cid=205 对于第一道题 UFS(Union  Find  Set) ,请参见http://blog.csdn.net/u011632342/article/details/37814289,题目大意一样,解法一样,不过后台测试数据还没整太多,数据比较弱... 对于第二道题STR(STRing),本来是想着给大家"送福利"呢,可能由于我的题目表述能力不太好或者样例数据的特殊性或

ACM暑假集训总结

暑假集训总结 回想去年暑假集训,和boblee.yyd组队时,他们为了复习考研,只有我一人默默的在基地训练,再到今年和yj.cq组队,三人能在基地一起刷题训练.再回想去年暑假自己作为新人,只能抱着两位队友的大腿,到今年作为一队的成员,要挑起集训队的大梁.从去年的全俱乐部开黑只能压线过几场网络赛,再到今年的队伍间各自做题,照样能没什么压力的通过网赛.亲眼见证俱乐部由弱到强,由不为人知到众所周知,自己不仅感触颇多,也同样敬佩起当初办起这个俱乐部的创始人们. 作为一个刚刚接触OI就要面临高考的人,才刚

「总结」2019暑假集训

啊,我最喜欢的暑假集训终究还是结束了. 感觉集训收获的还是挺大的,不管是在知识方面还是心态方面,感觉现在考试心态稳了很多,不管是考前考时考后,都可以很快的调整了.大概就是教练所说的考试心态调整的加速.最近感觉非常好,虽然水题还是老爆零,考得也不怎么样,不过我的确是飞快的在进步了,只要我在进步就好了,我很心满意足的. 总结一下接近30场的考试吧. 一开始的7场一直只有50分左右,而且还有两次没有交卷子,气得我把纸贴在电脑上提醒自己交卷子,虽然成绩并不怎么样,不过我还好在也不犯这个错误了. 然后就理

《我与希乐仑》第二弹

致徐敏: 如果你觉得我的这篇报道侵害了你和贵公司的权益,你可以上法院告我,但我说的都是事实,不怕你告,有事找我律师,谢谢! 我是希乐仑科技发展(上海)有限公司前员工,曾经为希乐仑立下汗马功劳.这公司从2014年2月份开始搞我,我去年的绩效是3.8/5.0,完全没有绩效问题.他们倒好,自从我查完我们公司某商业间谍之后,就给我穿小鞋,说我这个不好,那个拖延,这不是扯淡吗?公司在3月5日非法把我裁掉,而且直到现在还未支付我2月份工资,行吧,那我就不再沉默了,当我吃素的是吧!我现在把这件事情公之于众,望