• poj1703 Find them, Catch them(并查集)


    https://vjudge.net/problem/POJ-1703

    9ms多,卡着时间过了。上次一道并查集也是这样,总觉得要学一波并查集的优化。。

    续:好像是可以只做一层存放敌人即可。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<queue>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<cmath>
     7 #include<stack>
     8 #define lson l, m, rt<<1
     9 #define rson m+1, r, rt<<1|1
    10 #define INF 0x3f3f3f3f
    11 typedef unsigned long long ll;
    12 using namespace std;
    13 const int N=100000;
    14 int t, n, m, x, y, pre[200010];
    15 char c;
    16 int find(int x)
    17 {
    18     while(x != pre[x]){
    19         x = pre[x];
    20     }
    21     return x;
    22 }
    23 int is_same(int a, int b)
    24 {
    25     int tx = find(a);
    26     pre[a] = tx;
    27     int ty = find(b);
    28     pre[b] = ty;
    29     if(tx == ty) return 1;
    30     return 0;
    31 }
    32 void join(int a, int b)
    33 {
    34     int tx = find(a);
    35     pre[a] = tx;
    36     int ty = find(b);
    37     pre[b] = ty;
    38     pre[tx] = ty;
    39 }
    40 int main()
    41 {
    42     scanf("%d", &t);
    43     while(t--){
    44         scanf("%d%d", &n, &m);
    45         for(int i = 1; i <= N*2; i++){
    46             pre[i] = i;
    47         }
    48         //c = getchar();
    49         for(int i = 0; i < m; i++){
    50             c = getchar();
    51             scanf("%c%d%d", &c, &x, &y);
    52             if(c == 'A'){
    53                 if(is_same(x, y)||is_same(x+N, y+N)){
    54                     printf("In the same gang.
    ");    
    55                 }
    56                 else{
    57                     if(!is_same(x, y)&&!is_same(x, y+N)){
    58                         printf("Not sure yet.
    ");
    59                     }
    60                     else printf("In different gangs.
    ");
    61                 } 
    62             }
    63             else{
    64                 join(x, y+N);
    65                 join(x+N, y);
    66             }
    67         }
    68     }
    69     return 0;
    70 }
  • 相关阅读:
    发送短信验证(防刷新)
    JsRender 学习总结
    JsRender (js模板引擎)
    jQuery中ready与load事件的区别
    web端图片文件直传
    2018面对对象_作业三
    2018面对对象_作业二
    2018面对对象_作业一
    2018寒假作业_4(自我总结)
    2018寒假作业_3(电梯版本二)
  • 原文地址:https://www.cnblogs.com/Surprisezang/p/8996856.html
Copyright © 2020-2023  润新知