您的位置:首页 > 理论基础 > 数据结构算法

HDU - 1213 How Many Tables解题报告(并查集)

2017-04-25 20:06 465 查看

题目大意:

并查集魔板题。

代码:

#include<iostream>
#include<math.h>
#include<stdio.h>
#include<string.h>
#define maxn 1500
using namespace std;

int test;
int n,m;
int boss[maxn];
void init()
{
for(int i=0;i<maxn;i++)
{
boss[i]=i;
}
}

void add(int a,int b)
{
if(boss[a]==a&&boss[b]==b)
{
boss[a]=b;
return;
}
boss[a]=boss[boss[a]];
boss[b]=boss[boss[b]];
add(boss[a],boss[b]);
}

int main()
{
cin>>test;
while(test--)
{
init();
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b;
cin>>a>>b;
add(a,b);
}
int s=0;
for(int i=1;i<=n;i++)
{
if(boss[i]==i)
{
s++;
}
}
cout<<s<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息