zoukankan      html  css  js  c++  java
  • poj 2492 a bug's life 简单带权并查集

    题意大致为找同性恋的虫子。。。。

    这个比食物链要简单些。思路完全一致,利用取余操作实现关系之间的递推。

    个人感觉利用向量,模和投影可能可以实现具有更加复杂关系的并查集。

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 const int MAXN=2010;
     5 int fa[MAXN];int rel[MAXN];    //rel[i]=0 代表与根节点同性,1代表异性
     6 void _set(int a)
     7 {
     8     for(int i=1;i<=a;i++)
     9     {
    10         fa[i]=i;
    11         rel[i]=0;
    12     }
    13 }
    14 int _find(int a)
    15 {
    16     if(a==fa[a]) return fa[a];
    17     int t=fa[a];
    18     fa[a]=_find(fa[a]);
    19     rel[a]=(rel[a]+rel[t])%2;
    20     return fa[a];
    21 }
    22 void _union(int x, int y)
    23 {
    24     int fx=_find(x);
    25    // int fy=_find(y);
    26    // fa[x]=fy;
    27     //rel[fx]=(1+rel[y]-rel[x]+2)%2;
    28     fa[fx]=y;
    29     rel[fx]=1-rel[x];
    30 }
    31 int main()
    32 {
    33    // freopen("in.txt","r",stdin);
    34   //  freopen("out.txt","w",stdout);
    35     int cases,flag,num,inter,x,y,fx,fy;
    36     scanf("%d",&cases);
    37     for(int i=1;i<=cases;i++)
    38     {
    39         scanf("%d %d",&num,&inter);
    40         _set(num);
    41         flag=0;
    42         for(int j=1;j<=inter;j++)
    43         {
    44 
    45             scanf("%d %d",&x,&y);
    46             fx=_find(x);
    47             fy=_find(y);
    48             if(fx==fy)
    49             {
    50                 if(rel[x]==rel[y]) flag=1;
    51             }
    52             else _union(x,y);
    53 
    54         }
    55         printf("Scenario #%d:
    ",i);
    56         if(flag)
    57         printf("Suspicious bugs found!
    ");
    58         else printf("No suspicious bugs found!
    ");
    59         printf("
    ");
    60     }
    61 
    62     return 0;
    63 }
    View Code
  • 相关阅读:
    Java编程练习(四)——集合框架应用
    89. Gray Code (Java)
    加解密算法
    Cookie、Session和Token
    87. Scramble String (Java)
    51. N-Queens (JAVA)
    85. Maximal Rectangle (JAVA)
    84. Largest Rectangle in Histogram (JAVA)
    81. Search in Rotated Sorted Array II (JAVA)
    77. Combinations (JAVA)
  • 原文地址:https://www.cnblogs.com/zhixingr/p/6916812.html
Copyright © 2011-2022 走看看