F - The Suspects(2017-01-16)

题目大意
这道题是一道并查集的题,大概意思就是编号为0的人被认为带有SARS病毒,与他同一组的人有可能被传染,而他们被传染后可能再次传染和他们同组的人;所以题目要求求出有多少人可能被传染?
思路
将输入的同组的人连起来,注意连的时候要把节点少的往节点大的树上连,不然可能会退化成链表;然后再搜索和0同一棵树上的人有多少;

代码如下:

#include
int pre[30005];
int n,m,k,a,b;
int find(int x)
{
    if(pre[x]==x) return x;
    else
    return find(pre[x]);
}
int Union(int x,int y)
{
    int fx=find(x);
    int fy=find(y);
    if(fy>fx)
    {
        pre[fy]=fx;
    }
    if(fy

你可能感兴趣的:(F - The Suspects(2017-01-16))