1 solutions

  • 0
    @ 2025-11-5 15:08:53

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int map[210][210], father[210];
    int main()
    {
    //    freopen("a.txt","r",stdin);
        int n, i, j, k, x;
        while(cin >> n)
        {
            memset(map,0,sizeof(map));
            for(i = 1; i <= n; ++ i)
                while(scanf("%d",&x),x)
                   map[i][x] = 1;
            for(k = 1; k <= n; ++ k)
            for(i = 1; i <= n; ++ i)
            for(j = 1; j <= n; ++ j)
                    if(map[i][k] && map[k][j])
                        map[i][j] = 1;
           for(i = 1; i <= n; ++ i)
               father[i] = i;
           for(i = 1; i <= n; ++ i)
           for(j = 1; j <= n; ++ j)
               if(map[i][j]) father[j] = father[i];
           int cnt = 0;
           for(i = 1; i <= n; ++ i)
               if(father[i] == i) cnt ++;
            cout << cnt << endl;
        }
        return 0;
    }
    
    • 1

    Information

    ID
    16443
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By