思路:大白书上的并查集题



#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);
	}
}