首页 > 其他 > 详细

并查集,判断图中的两个点是否之间是否又路径

时间:2020-09-19 18:08:21      阅读:49      评论:0      收藏:0      [点我收藏+]
 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 }

 

并查集,判断图中的两个点是否之间是否又路径

原文:https://www.cnblogs.com/zhang-le/p/13696231.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!