#include <stdio.h> #define N 1000010 int dad[N],h[N]; void Initial() { for(int i=0;i<N;i++) { dad[i]=i; h[i]=0; } } int Find(int x) { if(x!=dad[x]) dad[x]=Find(dad[x]); return dad[x]; } void Union(int x,int y) { x = Find(x); y = Find(y); if(x!=y) { if(h[x]<h[y]) dad[x]=y; else if(h[x]>h[y]) dad[y]=x; else{ dad[y]=x; h[x]++; } } return; } int main() { int num=0,x,y,ans=0,i; Initial(); while(scanf("%d%d",&x,&y)!=EOF) { num++; h[x]=1,h[y]=1; Union(x, y); } for(i=0;i<N;i++) { if(h[i]==0) continue; if(Find(i)==i) ans++; } printf("%d\n",ans); return 0; }