162 条题解
-
-1
ztf LV 8 @ 2015-10-27 21:40:28
#include<cstdio>
#include<cstring>
int fa[205];
int find(int x)
{
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
void Union(int a,int b)
{
if(find(a)!=find(b))
{
fa[find(a)]=find(b);
}
}
int main()
{
int n,i,j,k,p=0,count=0;
scanf("%d",&n);
k=n;
for(i=1;i<=n;i++) fa[i]=i;
for(i=1;i<=n;i++)
{
int x;
while(scanf("%d",&x))
{
if(x==0) break;
Union(i,x);
}
}
for(i=1;i<=n;i++)
{
k--;
p=0;
for(j=i+1;j<=n;j++) if(find(i)==find(j)) k--,p=1;
if(p) count++;
}
n-=count;
printf("%d",n);
return 0;
} -
-1@ 2013-02-16 10:13:17