谜82pts,并查集
查看原帖
谜82pts,并查集
1050431
DevilsFlame楼主2024/7/3 14:53
#include <bits/stdc++.h>
using namespace std;
int f[210],n,ans,a,x,y,s[210];
int find(int x)
{
    if(f[x]!=x) f[x] = find(f[x]);
    return f[x];
}
int main(){
    ios::sync_with_stdio(0);
    cin >> n;
    for(int i = 1;i <= n + 5;i ++) f[i] = i;
    for(int i = 1;i <= n;i ++)
    {
        cin >> a;
        while(a)
        {
            x = find(i),y = find(a);
            if(y != x)
            {
                f[a] = x;
            }
            cin >> a;
        }
    }
    for(int i = 1;i <= n;i ++) if(f[i] == i) ans ++;
    cout << ans << endl;
    return 0;
}
2024/7/3 14:53
加载中...