大家觉得这题难吗

我想知道这个程序对不对
#include<iostream>
#include <cstdio>
using namespace std;
int f[201], n, ans=0;
int getf(int v){
if(f[v]==v) return v;
else{
f[v]=getf(f[v]);
return f[v];
}
}
void merge(int v, int u){
int t1, t2;
t1=getf(v);
t2=getf(u);
if(t1!=t2)
f[t2]=t1;
}
int main(){
int i, t;
scanf("%d",&n);
for(i=1; i<=n; i++) f[i]=i;
for(i=1; i<=n; i++)
while (true){
scanf("%d",&t);
if (t==0) break;
merge(i, t);
}
for (i=1;i <=n;i++) if (f[i]==i) ans++;
printf("%d",ans);
}

0 条评论

目前还没有评论...

信息

ID
1023
难度
4
分类
图结构 | 强连通分量 点击显示
标签
递交数
4321
已通过
1972
通过率
46%
被复制
13
上传者