美文网首页
1118 Birds in Forest(25 分)

1118 Birds in Forest(25 分)

作者: zjh3029 | 来源:发表于2018-09-02 14:35 被阅读0次
    #include<iostream>
    #include<numeric>
    using namespace std;
    
    int N, M, K,L;
    const int maxn = 10010;
    bool exist[maxn];
    int fa[maxn] = { 0 }, cnt[maxn] = { 0 };
    
    int findFather(int x)
    {
        int a = x;
        while (x!=fa[x])
        {
            x = fa[x];
        }
        while (a!=fa[a])//互相交换值
        {
            int z = a;
            a = fa[a];
            fa[z] = x;
        }
        return x;
    }
    void Union(int a, int b)
    {
        int faA = findFather(a);
        int faB = findFather(b);
        if (faA!=faB)
        {
            fa[faA] = faB;
        }
    }
    
    int main()
    {
        cin >> N;
        iota(fa, fa+maxn, 0);
        int id, temp;
        for (int i = 0; i < N; i++)
        {
            cin >> K >> id;
            exist[id] = true;
            for (int j = 0; j < K-1; j++)
            {
                cin >> temp;
                Union(id, temp);
                exist[temp] = true;
            }
        }
    
        for (int i = 1; i < maxn; i++)
        {
            if (exist[i]==true)
            {
                int root = findFather(i);
                cnt[root]++;
            }
        }
        int numtrees = 0, numbirds = 0;
        for (int i = 0; i < maxn; i++)
        {
            if (exist[i] == true && cnt[i]!= 0)
            {
                numtrees++;
                numbirds += cnt[i];
            }
        }
        cout << numtrees << " " << numbirds << endl;
        cin >> L;
        int ida, idb;
        for (int i = 0; i < L; i++)
        {
            cin >> ida >> idb;
            if (findFather(ida)==findFather(idb))
            {
                cout << "Yes" << endl;
            }
            else
            {
                cout << "No" << endl;
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:1118 Birds in Forest(25 分)

          本文链接:https://www.haomeiwen.com/subject/uzoywftx.html