poj 2492(关系并查集) 同性恋

题目;http://poj.org/problem?id=2492

卧槽很前卫的题意啊,感觉节操都碎了,

t组测试数据,然后n,m,n条虫子,然后m行,每行两个数代表a和b有性行为(默认既然能这样就代表两者是异性),最后问的是 有没有同性恋, 比如a,b  b,c  a,c

第一组可以得到a和b是异性,第二组可以得到b和c是异性,因为只有两种性别,所以可以得出a和c一定是同性,但是第三组有表明a和c有性行为,赤裸裸的同性恋

所以输出 Suspicious bugs found!

和食物链哪题差不多,也是关系型并查集,这里的关系只有0和1两种,相等即为同性,不等就是异性

 

 1 #include<cstdio>
 2 using namespace std;
 3 int father[2001],ran[2001];
 4 void give(int n)
 5 {
 6     for (int i=1;i<=n;i++)
 7     {
 8         father[i]=i;
 9         ran[i]=0;
10     }
11 }
12 int _find(int x)
13 {
14     if (x==father[x]) return father[x];
15     int t=_find(father[x]);
16     ran[x]=(ran[x]+ran[father[x]]+2)%2;
17     father[x]=t;
18     return father[x];
19 }
20 int main()
21 {
22     int n,m,t,ans,x,y,flag;
23     scanf("%d",&t);
24 
25         ans=1;
26         while (t--)
27         {
28             scanf("%d %d",&n,&m);
29             give(n);
30             flag=0;
31             while (m--)
32             {
33                 scanf("%d %d",&x,&y);
34                 int sx=_find(x);
35                 int sy=_find(y);
36                 if (sx!=sy)
37                 {
38                      father[sx]=sy;
39                      ran[sx]=(ran[y]-ran[x]+2+1)%2;
40                 }
41                 else
42                 {
43                     if (((ran[x]-ran[y]+2)%2)!=1)
44                         flag=1;
45                 }
46             }
47             printf("Scenario #%d:\n",ans++);
48             if (flag==1) printf("Suspicious bugs found!\n");
49             else printf("No suspicious bugs found!\n");
50             printf("\n");
51         }
52 
53     return 0;
54 }

 

转载于:https://www.cnblogs.com/JJCHEHEDA/p/4827377.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值