A Bug's Life____并查集

Posted dragondragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A Bug's Life____并查集相关的知识,希望对你有一定的参考价值。

English preparation:

falsify      伪造;篡改;歪曲;证明...虚假

the sexual behavior of a rare species of bugs.  一种稀有昆虫的性行为。

the number of scenarios      场景数量

consecutively  连续地

 

趣语:

这个时代,是个雷人的时代。凤姐的出现,让我们对自己的审美观产生了怀疑;
著姐的降临,使我们对自己的性取向做出了更正。而如今,bug们被同性恋了,这直接就是商人们为了扩大HS产业的炒作。
哪一天,也许你也被变态了,被脑残了。。。

 

题目大意:给出n条虫子,m个配对(男<->女)的情况,问数据有没有错误(出现同性配对)?

 

Reference:

1.https://blog.csdn.net/freezhanacmore/article/details/8799495

2.https://www.cnblogs.com/dongsheng/archive/2012/08/08/2627917.html

3.https://blog.csdn.net/pku_Coder/article/details/53520171

 

codes:

#include<cstdio>
#include<iostream>
const int maxn=2000+10;
int p[maxn]; //记录父节点
int r[maxn]; //记录与父节点关系, 0 同类, 1异类
 
int find(int x)

    if(x==p[x]) return x;
    
    int t=p[x];
    p[x]=find(p[x]);
    r[x]=(r[x]+r[t])%2; //每次回溯更新一次父节点,相应更新关系
    return p[x];

 
void Union(int x,int y)

    int fx=find(x);
    int fy=find(y);
 
    p[fx]=fy; //任意
    r[fx]=(r[x]+1+r[y])%2; //r[]没有方向.我就是这一步的关系,这一个式子,这一处关节没有搞明白! 

void set(int n)

    for(int i=1;i<=n;i++)
    
        p[i]=i;
        r[i]=0;
    


int main()

    int T;
    scanf("%d",&T);
    for(int i=1;i<=T;i++)
    
        int n,m;
        scanf("%d%d",&n,&m);
        set(n);
        int x,y;
        bool flag=true;
        while(m--)
        
            scanf("%d%d",&x,&y); //本应不同类
            if(find(x)==find(y))
            
                if(r[x]==r[y]) //如果同类
                
                    flag=false;
                    continue;
                
            
            else Union(x,y);
        
        printf("Scenario #%d:\\n",i);
        if(flag) printf("No suspicious bugs found!\\n");
        else     printf("Suspicious bugs found!\\n");
        printf("\\n");
    
    return 0;

 

 
 
 

 

以上是关于A Bug's Life____并查集的主要内容,如果未能解决你的问题,请参考以下文章

poj2492 A Bug's Life (并查集拓展)

HDU1289 A Bug's Life (带权并查集)

POJ 2492 A Bug's Life (并查集)

A Bug's Life POJ - 2492 (带权并查集)

POJ 2492 A Bug's Life (种类并查集)

POJ-2492.A Bug's Life(带权并查集)