zoukankan      html  css  js  c++  java
  • 并查集,判断图中的两个点是否之间是否又路径

     1 #include<iostream>
     2 using namespace std;
     3 //n-节点数
     4 //m-边的数
     5 //p-测试数
     6 //给一幅图,判断两个点之间是否存在路径
     7 
     8 int root[10001], n, m, p;
     9 int find(int x) {
    10     if (x == root[x])return x;
    11     root[x] = find(root[x]);
    12     return root[x];
    13 }
    14 int main() {
    15     cin >> n >> m >> p;
    16     for (int i = 1; i <= n; ++i) {
    17         root[i] = i;
    18     }
    19     for (int i = 1; i <= m; ++i) {
    20         int x, y;
    21         cin >> x >> y;
    22         if (find(x) != find(y))
    23             root[find(x)] = find(y);
    24     }
    25     for (int i = 1; i <= p; i++) {
    26         int x, y;
    27         cin >> x >> y;
    28         if (root[find(x)] == root[find(y)])
    29             cout << "YES" << endl;
    30         else
    31             cout << "NO" << endl;
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    Java 包装类
    CTF 入门笔记
    Java 实践
    Java Object类
    Java 接口
    Java 抽象类
    Java 关键字final
    Java 多态性
    C#类,对象,类成员简介
    C#初始类和命名空间
  • 原文地址:https://www.cnblogs.com/zhang-le/p/13696231.html
Copyright © 2011-2022 走看看