题解
2025-03-02 10:44:38
发布于:浙江
14阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int fa[5005];//建立代表数组,表示i所在集合代表为fa[i]
int get(int x){//get函数,用来查找一个元素x的所属集合代表
if(fa[x] == x) return x;//如果自己代表自己直接输出
return get(fa[x]);//否则向上寻找
}
void merge(int x,int y){//merge函数,用来合并x,y到一个集合
fa[get(x)] = get(y);
}
int main(){
int n,m,p;
cin >> n >> m >> p;//输入
for(int i = 1;i <= n;i++){
fa[i] = i;//初始化自己代表自己
}
while(m--){
int x,y;
cin >> x >> y;//输入两个数
if(get(x) != get(y)) merge(x,y);//合并两个数到一个集合
}
while(p--){
int x,y;
cin >> x >> y;//输入提问两个数
if(get(x) == get(y)) cout << "Yes";//如果两数所属集合代表相同输出Yes
else cout << "No";//否则输出No
cout << endl;//记得换行
}
//不写return 0好习惯
}
全部评论 3
d
2025-03-02 来自 浙江
0d
2025-03-02 来自 浙江
0d
2025-03-02 来自 浙江
0
有帮助,赞一个