luogu P1551 亲戚

简介: luogu P1551 亲戚

题目背景

若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。


题目描述

规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。


输入输出格式

输入格式:

第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。


以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Mi和Mj具有亲戚关系。


接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。


输出格式:

P行,每行一个’Yes’或’No’。表示第i个询问的答案为“具有”或“不具有”亲戚关系。


思路:并查集

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int fa[maxn];
int find(int x) {
    return x == fa[x] ? x : fa[x] = find(fa[x]);
}
int main() {
    int n, m, q, u, v;
    cin >> n >> m >> q;
    for (int i = 1; i <= n; i++) { //初始化每个集合 
        fa[i] = i;
    } 
    for (int i = 1; i <= m; i++) {
        cin >> u >> v;
        fa[find(u)] = find(v); //合并集合 
    }
    for(int i = 1; i <= q; i++) {
        cin >> u >> v;
        if(find(u) == find(v)) {//判断是否是同一个集合 
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }
    return 0;
}
相关文章
|
27天前
|
机器学习/深度学习 算法 关系型数据库
第十五届蓝桥杯C++B组省赛
第十五届蓝桥杯C++B组省赛
59 14
|
30天前
lanqiao OJ 182 小朋友崇拜圈
lanqiao OJ 182 小朋友崇拜圈
27 2
|
28天前
lanqiao oj 1121 蓝桥公园(floyd)
lanqiao oj 1121 蓝桥公园(floyd)
41 0
|
28天前
lanqiao oj 1135 蓝桥幼儿园(并查集)
lanqiao oj 1135 蓝桥幼儿园(并查集)
26 0
|
28天前
lanqiao oj 1122 蓝桥王国
lanqiao oj 1122 蓝桥王国
15 0
|
28天前
lanqiao OJ 131 生命之树
lanqiao OJ 131 生命之树
29 0
|
28天前
lanqiao oj 131 生命之树
lanqiao oj 131 生命之树
26 0
|
测试技术
蓝桥 晚会节目单 (线段树)
蓝桥 晚会节目单 (线段树)
|
存储 算法 Java
【AcWing每日一题】4818. 奶牛大学
【AcWing每日一题】4818. 奶牛大学
115 0
luogu P1516 青蛙的约会
luogu P1516 青蛙的约会
71 0