poj2492

题目不难,属于并查集水题。大致题意为:

给定n个bugs,编号依次1、2、……n。它们之间只有雄性和雌性之分,并给定m对交配的情况,根据这m对交配的情况,判断是否有同性恋出现的情况。若有则输出“No suspicious bugs found!”否则输出“Suspicious bugs found!”;

题目意思很明确了。而且题型也很清晰,典型的循环路径并查集。分析如下:

这里令0表示雄性,1表示雌性(这里0和1只不过表示两种对立的状态,并没有具体的含义,可以理解为要么是雄性,要么是雌性)。给每一个bug初始化deep为0,即均为雄性或雌性(深度deep表示bug的相对性别关系)。现在解释一下deep如何表示性别的相对关系:

假设A匹配B,可令deep[A]=0,deep[B]=1。现在又有B与C匹配,那么deep[B]=1,deep[C]应该为0才对。这样的话,我们可以将具有关系的bug并在同一集合中,并用模2方式来循环表示bug之间的相对性别关系。

那么假设有匹配A B,这里就有两种情况了。

1)A与B已经有了关系,即在同一个关系集合中,分两种情况讨论:

  这里deep表示bug之间的相对性别关系,

   11)若A的深度deep与B的深度不同(即一个为0,一个为1),则说明不是同性恋,继续输入关系

   12)若A的深度deep与B的深度相同(即均为0或均为1),则说明是相同性别,为同性恋关系,已可判定结果,后

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值