杭电 1213 How Many Tables
2014-08-05 18:58
381 查看
#include"stdio.h"
#define N 1050
int s
;
void chushihua()
{
int i;
for(i=0;i<N;i++)
s[i]=i;
}
int find(int x)
{
while(s[x]!=x) x=s[x];
return x;
}
int fri(int x,int y)
{
if(find(x)!=find(y))
{
s[find(y)]=find(x);//不要误认为是他们俩个认亲的方式是他们俩的事,而是从他们老大下手,他们老大亲了他们就亲了
return 1;
}
return 0;
}
int main()
{
int m,n;
scanf("%d",&m);
int a,b;
int c1,c2;
while(m--)
{
int sum=0;
chushihua();
scanf("%d %d",&a,&b);
int i,j;
for(i=1;i<=b;i++)
{
scanf("%d%d",&c1,&c2);
sum=sum+fri(c1,c2);
}
/* for(j=1;j<=a;j++)
{
if(s[j]==j)
sum++;
}
*/
printf("%d\n",a-sum);
}
return 0;
}
#define N 1050
int s
;
void chushihua()
{
int i;
for(i=0;i<N;i++)
s[i]=i;
}
int find(int x)
{
while(s[x]!=x) x=s[x];
return x;
}
int fri(int x,int y)
{
if(find(x)!=find(y))
{
s[find(y)]=find(x);//不要误认为是他们俩个认亲的方式是他们俩的事,而是从他们老大下手,他们老大亲了他们就亲了
return 1;
}
return 0;
}
int main()
{
int m,n;
scanf("%d",&m);
int a,b;
int c1,c2;
while(m--)
{
int sum=0;
chushihua();
scanf("%d %d",&a,&b);
int i,j;
for(i=1;i<=b;i++)
{
scanf("%d%d",&c1,&c2);
sum=sum+fri(c1,c2);
}
/* for(j=1;j<=a;j++)
{
if(s[j]==j)
sum++;
}
*/
printf("%d\n",a-sum);
}
return 0;
}
相关文章推荐
- hdu杭电1213 How Many Tables【并查集】
- 杭电 1213 How Many Tables 并查集
- 杭电acm 1213 (How many tables)
- HDOJ 1213 How Many Tables 杭电 ACM
- 杭电1213 How Many Tables(并查集)
- 杭电1213-How Many Tables
- 杭电1213_How Many Tables——java(并查集)
- 杭电1213How Many Tables
- 杭电1213 How Many Tables(并查集找根节点)
- 杭电 hdu 1213 How Many Tables (并查集,简单题)
- 杭电oj1213——How Many Tables(并查集)
- 杭电hdu 1213 How Many Tables并查集
- 并查集-杭电1213-How Many Tables-难度1
- 杭电1213How Many Tables与杭电1232大同小异
- HDOJ 1213 How Many Tables(并查集)
- Hud 1213 How Many Tables[简单并查集]
- 【HDU-1213】How Many Tables
- hdu 1213 How Many Tables(并查集~~)
- HDU 1213 How Many Tables [并查集]
- poj 1213 How Many Tables 并查集水题