HDU 6370 Werewolf

本文介绍了HDU 6370 Werewolf的解题思路,涉及狼人杀游戏中的身份判断问题。通过分析村人与狼人的陈述,利用并查集建立有向图,区分铁村和铁狼。对于联通块,如果是基环树或树结构,通过深搜确定狼边影响的铁狼数量。最后提供了AC代码实现。
摘要由CSDN通过智能技术生成

题目:HDU 6370 Werewolf

题意:
一群人玩狼杀,但是只有两种身份,村和狼,然后分别指认别人的身份
村一定说真话,而狼可以说真话说假话,最后问有几个人一定是村,有几个人一定是铁狼

思路:
先是铁村的个数,假设所有人都是狼,显然这个情况是合法的,所以铁村的个数是0,重点就是铁狼的个数
把评价当成边,先忽略狼边,建立一条有向的村边,用村边建图就会有很多个联通块,
这些联通块要么是基环树(点数=边数)要么是树(点数=边数+1)
对于基环树,假设这个联通块所有的人都是村,那么很显然这个方案是合法的,也就是说这些人不是铁狼

再说树,每个人都会有一句评价,那么之所以会是树,就是因为这个联通块存在某个点是狼边的端点
若是这条狼边是描述的狼是另一个联通块的,那么也存在一种方案为当前树节点是村民,其他人都是狼。
因此树上的节点不是铁狼。

最后的就是狼边描述的是这颗树上面的节点,举个例子
1说2是村,2说3是村,3说4是村,而4说2是狼。
因为4说别人是狼,所以先假设4是狼,那么3说4为村,说谎的3也就是狼,类推下去就123都是狼
那么假设4是村,那么2和1就都是狼
综上所述可以得到的结论就是狼边的两端点在同一个联通块的话࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值