思路:大白书上的并查集题
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 100000+10;
int fa[maxn];
int find(int x)
{
return fa[x]==x?x:fa[x]=find(fa[x]);
}
int main()
{
int x,y;
while(scanf("%d",&x)!=EOF)
{
for(int i = 0;i<=maxn;i++)
fa[i]=i;
int ans = 0;
while(x!=-1)
{
scanf("%d",&y);
x = find(x);
y = find(y);
if(x==y)
ans++;
else
fa[x]=y;
scanf("%d",&x);
}
printf("%d\n",ans);
}
}