第一次发题解
原题传送门
题意大概是这样的:
先给出三个数n,m,p,一共1…n个人,给定m组亲戚的关系(a,b),例如1和2是亲戚,1和3又是亲戚,那么2和3也是亲戚。最后给出p对人,问他们是不是亲戚,而亲戚的亲戚也是亲戚,所以此题用到并查集,合并题目中已知的亲戚关系。
以下先附上代码
#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<algorithm>
//头文件
using namespace std;
int n,m,p,a,b;
int c,d,f[500001];
void init()
{
for(int i=1;i<=n;i++)
{
f[i]=i;
}
}
//赋值函数,先假定每个人的亲戚都是自己
int getf(int k)
{
if(f[k]==k)
{
return k;
}
else
{
return getf(f[k]);
}
}
//寻找函数,如果给定的a,b相同或者a,b有亲戚关系,那么返回出b的亲戚就是a,把a赋值给b,方便后来判断ÿ