아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

거짓말쟁이들

면접 대비

시간 제한1초메모리 제한1024 MB

요약
후보 a가 후보 b를 거짓말쟁이 또는 정직한 사람이라고 주장한 기록이 주어질 때, 모든 주장과 모순되지 않는 진실/거짓 배정이 존재하는지 판정한다.
난이도

보통10점 중 6점

유형
그래프, BFS, 유니온 파인드, DFS
정답자
아직 제출이 없습니다

문제

비트랜드(Bitland)에서 곧 의회 선거가 열리며, 이에 맞춰 국영 방송 「Bit TV」에서 정치 토론이 진행됩니다. 토론에는 11번부터 NN번까지 번호를 뽑은 NN명의 후보가 참여합니다. 브로니우스(Bronius)는 매년처럼 이 토론을 아주 주의 깊게 지켜봅니다. 그는 올해 특히 다음 두 종류의 발언이 자주 반복되는 것을 발견했습니다.

  • ii번 후보가 "jj번 후보는 항상 거짓말을 한다"라고 주장한다.
  • ii번 후보가 "jj번 후보는 항상 진실을 말한다"라고 주장한다.

브로니우스는 이런 발언을 모두 받아 적었고, 이제 이 발언들이 서로 모순되지 않는지 확인하려 합니다.

각 후보를 '거짓말쟁이'와 '거짓말쟁이가 아닌 사람'으로 나누는 어떤 배정이 존재하여, 거짓말쟁이가 한 모든 발언은 거짓이고 거짓말쟁이가 아닌 사람이 한 모든 발언은 참이 되도록 만들 수 있다면, 그 발언들은 서로 모순되지 않는다고 합니다.

그러한 배정이 존재하는지 브로니우스가 판단할 수 있도록 도와주세요.

입력

첫 번째 줄에 두 양의 정수, 후보의 수 NN과 브로니우스가 모은 발언의 수 MM이 주어집니다.

이어지는 MM개의 줄 중 ii번째 줄에는 ii번째 발언을 나타내는 세 정수 aia_i, bib_i, mim_i가 주어집니다.

  • mi=1m_i = 1이면, aia_i번 후보가 "bib_i번 후보는 항상 거짓말을 한다"라고 주장한 것입니다.
  • mi=0m_i = 0이면, aia_i번 후보가 "bib_i번 후보는 항상 진실을 말한다"라고 주장한 것입니다.

입력에서 (ai,bi)(a_i, b_i) 쌍은 서로 다릅니다. 즉, 후보 aia_i는 후보 bib_i에 대해 최대 한 번만 발언할 수 있습니다.

출력

거짓말쟁이와 거짓말쟁이가 아닌 사람으로의 배정이 존재하면 EGZISTUOJA를, 존재하지 않으면 NEEGZISTUOJA를 출력하세요.

제한

  • 1≤N,M≤1000001 \le N, M \le 100000
  • 1≤ai≠bi≤N1 \le a_i \ne b_i \le N
  • 0≤mi≤10 \le m_i \le 1 (1≤i≤M1 \le i \le M)

예제2

  1. 예제 1

    입력
    5 5
    2 1 0
    3 2 0
    2 5 1
    3 4 1
    4 5 0
    
    예상 출력
    EGZISTUOJA
    
  2. 예제 2

    입력
    5 6
    2 1 0
    3 2 0
    2 5 1
    3 4 1
    4 5 0
    3 1 1
    
    예상 출력
    NEEGZISTUOJA