rt
虽然是并查集,但是有修改
WA#9、WA#11,82分
代码如下
// Author: Milonia (O v O)
#include <iostream>
using namespace std;
#define int long long
#define int_INF 0x3f3f3f3f
#define endl '\n'
int n;
const int N=210;
int p[N*N]; //p[i] 表示谁能传给i,且i为根节点
int find(int x){
if (x!=p[x]) p[x]=find(p[x]);
return p[x];
}
void h(int s,int d) { //并查集处理
if (find(s)!=find(d)) {
p[d]=s; // s能传给d,当然s的也能传给d的所有子节点
}
}
signed main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n;
for (int i=1;i<=n;i++) p[i]=i; //初始化
for (int i=1;i<=n;i++) { //处理每一个人
while (1) {
int a; cin>>a;
if (a==0) break;
h(i,a);
// cout<<i<<' '<<a<<' '<<endl;
}
}
int ans=0;
for (int i=1;i<=n;i++) if (i==p[i]) { //如果 能传给他自己的是他本身,那么ans++
// cout<<i<<endl;
ans++;
}
cout<<ans<<endl;
return 0;
}