Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
小白水过~#include<iostream> #include<cstdio> using namespace std; #define maxsize 50050 int count=1; int pre[maxsize]; int init(int n) { for(int i=1;i<=n;i++) pre[i]=i; } int find(int x) { if(pre[x]==x) return x; int tmp=find(pre[x]); return pre[x]=tmp; } int Union(int u,int v) { int p=find(u); int q=find(v); if(p!=q) pre[p]=q; } int main() { int n,m; while(~scanf("%d %d",&n,&m)&&(n||m)) { init(n); int a,b; while(m--) { scanf("%d %d",&a,&b); Union(a,b); } int cnt=0; for(int i=1;i<=n;i++) { if(find(i)==i) cnt++; } printf("Case %d: %d\n",count++,cnt); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator