码迷,mamicode.com
首页 > 其他好文 > 详细

图论 --- MST

时间:2014-05-31 04:23:49      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   tar   

<传送门>

【题目大意】

SARS病毒蔓延,编号为0的人已经感染了SARS病毒,现在给你一些分组,只要和0接触过的都是可能感染的嫌疑人,问你最多可能有多少人感染了该种病毒。

 

【题目分析】

简单的并查集,只要将所有一组的人都合并,最后来看一下和0一样的编号,统计一下输出就可。

 

bubuko.com,布布扣
#include<iostream>
using namespace std;

int father[30001];

int find_father(int x)
{
    if(father[x]!=x)
        return find_father(father[x]);
    return x;
}

int main()
{
    int n, m;
    int k;
    int i, j;
    int x, y;
    while(cin>>n>>m)
    {
        if(n==0 && m==0)
            break;
        if(m == 0)
        {
            cout << "1\n";
            continue;
        }
        for(i=0;i<=n;i++)
            father[i]=i;
        for(i=0;i<m;i++)
        {
            cin>>k;
            cin>>x;
            for(j=1;j<k;j++)
            {
                cin>>y;
                int p = find_father(x);
                int q = find_father(y);
                if(p!=q)
                    father[p]=q;
                x = y;
            }
        }
        int cnt=0;
        int f = find_father(0);
        for(i=0;i<n;i++)
        {
            if(find_father(i)==f)
                cnt++;
        }
        cout<<cnt<<endl;
    }
    return 0;
}
View Code

 

 

 

图论 --- MST,布布扣,bubuko.com

图论 --- MST

标签:c   style   class   blog   code   tar   

原文地址:http://www.cnblogs.com/acmer-jsb/p/3761686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!