AT_arc188_c.[ARC188C] Honest or Liar or Confused

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个村庄,住着 NN 个村民,编号从 11 到 NN。每个村民要么是正直者,要么是说谎者。此外,有些村民处于“混乱”状态。

你获得了 MM 条村民的证言。对于 i=1,2,…,Mi=1,2,\ldots,M,第 ii 条证言由 Ai,Bi,CiA_i,B_i,C_i 给出:

  • 若 Ci=0C_i=0,表示村民 AiA_i 证言村民 BiB_i 是正直者。
  • 若 Ci=1C_i=1,表示村民 AiA_i 证言村民 BiB_i 是说谎者。

所有村民都知道其他所有村民是正直者还是说谎者,并且他们的证言遵循如下规则:

  • 未混乱的正直者一定作出真实的证言。
  • 未混乱的说谎者一定作出虚假的证言。
  • 混乱的正直者一定作出虚假的证言。
  • 混乱的说谎者一定作出真实的证言。

也就是说,未混乱时,正直者说真话,说谎者说假话;混乱时,正直者说假话,说谎者说真话。

你想要推测出一组“混乱的村民”。一旦确定了混乱的村民集合,就能判断给定的 MM 条证言是否“矛盾”。这里,“证言矛盾”指的是:无论如何分配每个村民是正直者还是说谎者,总会存在某条证言违反上述规则。

请你找出一组使得所有证言不矛盾的“混乱的村民”集合。如果无论怎么选择混乱的村民集合,证言都矛盾,请指出这一点。

输入格式

输入按以下格式从标准输入读入。

NN MM A1A_1 B1B_1 C1C_1 A2A_2 B2B_2 C2C_2 ⋮\vdots AMA_M BMB_M CMC_M

输出格式

如果存在一组使得证言不矛盾的混乱村民集合,输出一个长度为 NN 的字符串,表示混乱的村民集合。若村民 ii 混乱,则第 ii 位为 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×1052 \leq N \leq 2 \times 10^5
  • 0≤M≤min⁡{2×105,N(N−1)}0 \leq M \leq \min\{2 \times 10^5, N(N-1)\}
  • 1≤Ai,Bi≤N,Ai≠Bi1 \leq A_i, B_i \leq N, A_i \neq B_i
  • 当 i≠ji \neq j 时,Ai≠AjA_i \neq A_j 或 Bi≠BjB_i \neq B_j
  • Ci=0C_i=0 或 Ci=1C_i=1
  • 所有输入均为整数

样例解释 1

假设村民 11 是未混乱的正直者,村民 22 是混乱的说谎者,村民 33 是未混乱的正直者。此时,村民 11 会如实证言村民 22 是说谎者、村民 33 是正直者。村民 22 虽然是说谎者,但因混乱而作出真实证言,称村民 33 是正直者。因此,所有证言都符合规则,所以仅村民 22 混乱的 010 是一种合法输出。

样例解释 2

假设村民 2,32,3 混乱。此时,关于每个村民是正直者还是说谎者共有 23=82^3=8 种组合。例如,“村民 11 是(未混乱的)正直者,村民 22 是(混乱的)说谎者,村民 33 是(混乱的)正直者”,此时村民 22 按规则应作出真实证言,但他却作出了虚假证言,违反规则。对其它组合也同理。因此,若村民 2,32,3 混乱,证言必然矛盾。实际上,在本例中,无论如何选择混乱的村民集合,证言都矛盾。

样例解释 3

混乱人数可以为任意,只要满足题意条件,00 人或全员混乱也可以。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页