即利用并查集:
代码:
#include<iostream> using namespace std; int bin[1001]; int find(int x) { int r=x; while(r!=bin[r]) { r=bin[r]; } return r; } void memge(int x,int y) { x=find(x); y=find(y); if(x!=y) bin[x]=y; } int main() { int n,m,x,y; int i,count; while(cin>>n&& n) { for(i=1;i<=n;i++) bin[i]=i; cin>>m; for(m;m>0;m--) { cin>>x>>y; memge(x,y); } for(count=-1,i=1;i<=n;i++) { if(bin[i]==i) count++; } cout<<count<<endl; } return 0; }