码迷,mamicode.com
首页 > 其他好文 > 详细

并查集

时间:2017-01-07 15:21:06      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:input   ++   for   div   --   ace   main   int   const   

n个人 m个关系 p次查询

simple input 

9 7 6

2 4

5 7

1 3

8 9

1 2

5 6

2 3

1 2

1 3

1 4

1 5

5 6

8 9

simput output

YES

YES

YES

NO

YES

YES

 

#include <iostream>
using namespace std;
const int M = 1e3 + 10;
int folk[M];
int dsu(int u) {
    return u == folk[u] ? u : folk[u] = dsu(folk[u]);
}
int main() {
    int n,m;
    int p;
    int a, b;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) folk[i] = i;
    scanf("%d", &m);
    scanf("%d", &p);
    while (m--) {
        int u, v;
        scanf("%d%d", &u, &v);
        int _u = dsu(u), _v = dsu(v);
        if (_u != _v) {
            folk[v] = _u;
        }
    }

    while (p--){
        scanf("%d%d", &a, &b);
        a = dsu(a);
        b = dsu(b);
        printf(a == b ? "YES\n" : "NO\n");

    }
    return 0;
}

 

并查集

标签:input   ++   for   div   --   ace   main   int   const   

原文地址:http://www.cnblogs.com/zhangyifang/p/6259330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!