만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

스파이 2

면접 대비

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

요약
각 의원의 스파이 여부 조건과 증언 조건을 모두 만족하는 배정이 있는지 판단하고, 있다면 N명의 스파이 여부를 출력합니다.
난이도

보통10점 중 5점

유형
그래프, DFS, 구현
정답자
아직 제출이 없습니다

문제

JOI 국에는 N명의 의원이 있으며, 1부터 N까지 번호가 붙어 있다. JOI 국의 대신인 당신은 의원 중에 숨어 있는 스파이를 찾아내려 한다. 각 의원 i (1 ≦ i ≦ N)에 대해 다음 정보를 얻었다.

  • Ti = 1이면 의원 i는 스파이이다.
  • Ti = 2이면 의원 i는 스파이가 아니다.
  • Ti = 3이면 의원 i가 스파이인지 알 수 없다.

추가로 청취 조사를 실시하여 M개의 정보를 얻었다. j번째 조사 결과 (1 ≦ j ≦ M)는 의원 Aj (1 ≦ Aj ≦ N)가 "의원 Bj (1 ≦ Bj ≦ N)는 스파이이고, 의원 Cj (1 ≦ Cj ≦ N)는 스파이가 아니다"라고 증언했다는 내용이다.

의원 Aj가 스파이라면 j번째 증언은 사실이 아니다. 즉 Aj가 스파이이면 "Bj는 스파이이다"와 "Cj는 스파이가 아니다" 중 적어도 하나는 거짓이다. 반대로 Aj가 스파이가 아니라면 j번째 증언은 참일 수도 있고 거짓일 수도 있다.

의원들의 정보와 청취 조사 결과가 주어지면, N + M개의 정보가 서로 모순되는지 판정하라. 모순이 없다면 각 의원이 스파이인지 구하라. N + M개의 정보와 맞는 답이 여러 개라면 그중 아무거나 출력해도 된다.

입력

입력은 표준 입력으로 다음 형식으로 주어진다.

N M
T1 T2 … TN
A1 B1 C1
A2 B2 C2
:
AM BM CM

출력

정보가 모순되면 -1을 한 줄에 출력하라.

그렇지 않으면 N줄을 출력한다. i번째 줄 (1 ≦ i ≦ N)에는 의원 i가 스파이이면 1, 스파이가 아니면 2를 출력하라. N + M개의 정보와 맞는 답이 여러 개라면 그중 아무거나 출력해도 된다.

제한

  • 1 ≦ N ≦ 300 000.
  • 1 ≦ M ≦ 300 000.
  • 1 ≦ Ti ≦ 3 (1 ≦ i ≦ N).
  • 1 ≦ Aj ≦ N (1 ≦ j ≦ M).
  • 1 ≦ Bj ≦ N (1 ≦ j ≦ M).
  • 1 ≦ Cj ≦ N (1 ≦ j ≦ M).
  • Aj ≠ Bj (1 ≦ j ≦ M).
  • Aj ≠ Cj (1 ≦ j ≦ M).
  • Bj ≠ Cj (1 ≦ j ≦ M).

예제3

  1. 예제 1

    입력
    4 1
    1 3 2 3
    1 2 3
    
    예상 출력
    1
    2
    2
    1
    
  2. 예제 2

    입력
    4 2
    2 1 3 1
    4 3 1
    2 4 3
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    3 2
    1 2 2
    2 1 3
    2 3 1
    
    예상 출력
    1
    2
    2