您的位置:首页 > 其它

并查集入门(hdu1272)

2017-03-31 21:44 274 查看
入门题,裸模板过,路径压缩都不用。

ac代码:

/*
title:hdu1213
description:并查集入门题
author: averyboy
time:
version:
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<set>
#include<cctype>
#include<ctime>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
using namespace std;
int father[100010];
//int mp[100010];
void  init(int n)
{
for(int i=1;i<=n;i++)
{
father[i]=i;
}
return;
}
int getfather(int i)
{
if(father[i]!=i)
{
father[i]=getfather(father[i]);//路径压缩
}
return father[i];
}
void unio(int x,int y)
{
int m=getfather(x);
int n=getfather(y);
if(m!=n)
{
father[m]=n;
}
return ;
}
bool issame(int x,int y)
{
return getfather(x)==getfather(y);
}

int main()
{
int T,n,m,a,b,ans;
while(~scanf("%d",&T))
{
while(T--)
{
ans=0;
scanf("%d%d",&n,&m);
init(n);
for(int i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
unio(a,b);
}
for(int i=1;i<=n;i++)
{
if(father[i]==i)
ans++;
}
cout<<ans<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: