| ||||||||||
| 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