AT_arc188_c.[ARC188C] Honest or Liar or Confused
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个村庄,住着 N 个村民,编号从 1 到 N。每个村民要么是正直者,要么是说谎者。此外,有些村民处于“混乱”状态。
你获得了 M 条村民的证言。对于 i=1,2,…,M,第 i 条证言由 Ai,Bi,Ci 给出:
- 若 Ci=0,表示村民 Ai 证言村民 Bi 是正直者。
- 若 Ci=1,表示村民 Ai 证言村民 Bi 是说谎者。
所有村民都知道其他所有村民是正直者还是说谎者,并且他们的证言遵循如下规则:
- 未混乱的正直者一定作出真实的证言。
- 未混乱的说谎者一定作出虚假的证言。
- 混乱的正直者一定作出虚假的证言。
- 混乱的说谎者一定作出真实的证言。
也就是说,未混乱时,正直者说真话,说谎者说假话;混乱时,正直者说假话,说谎者说真话。
你想要推测出一组“混乱的村民”。一旦确定了混乱的村民集合,就能判断给定的 M 条证言是否“矛盾”。这里,“证言矛盾”指的是:无论如何分配每个村民是正直者还是说谎者,总会存在某条证言违反上述规则。
请你找出一组使得所有证言不矛盾的“混乱的村民”集合。如果无论怎么选择混乱的村民集合,证言都矛盾,请指出这一点。
输入格式
输入按以下格式从标准输入读入。
N M A1 B1 C1 A2 B2 C2 ⋮ AM BM CM
输出格式
如果存在一组使得证言不矛盾的混乱村民集合,输出一个长度为 N 的字符串,表示混乱的村民集合。若村民 i 混乱,则第 i 位为 1,否则为 0。
如果不存在这样的集合,输出 -1。
输入输出样例
输入#1
3 3 1 2 1 1 3 0 2 3 0
输出#1
010
输入#2
3 6 1 2 1 1 3 0 2 1 1 2 3 0 3 1 1 3 2 0
输出#2
-1
输入#3
3 0
输出#3
000
说明/提示
限制条件
- 2≤N≤2×105
- 0≤M≤min{2×105,N(N−1)}
- 1≤Ai,Bi≤N,Ai=Bi
- 当 i=j 时,Ai=Aj 或 Bi=Bj
- Ci=0 或 Ci=1
- 所有输入均为整数
样例解释 1
假设村民 1 是未混乱的正直者,村民 2 是混乱的说谎者,村民 3 是未混乱的正直者。此时,村民 1 会如实证言村民 2 是说谎者、村民 3 是正直者。村民 2 虽然是说谎者,但因混乱而作出真实证言,称村民 3 是正直者。因此,所有证言都符合规则,所以仅村民 2 混乱的 010 是一种合法输出。
样例解释 2
假设村民 2,3 混乱。此时,关于每个村民是正直者还是说谎者共有 23=8 种组合。例如,“村民 1 是(未混乱的)正直者,村民 2 是(混乱的)说谎者,村民 3 是(混乱的)正直者”,此时村民 2 按规则应作出真实证言,但他却作出了虚假证言,违反规则。对其它组合也同理。因此,若村民 2,3 混乱,证言必然矛盾。实际上,在本例中,无论如何选择混乱的村民集合,证言都矛盾。
样例解释 3
混乱人数可以为任意,只要满足题意条件,0 人或全员混乱也可以。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?