1 条题解

  • 0
    @ 2025-2-14 21:30:05

    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

    信息

    ID
    949
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者