RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
문제 JOI00126

スパイ 2 (Spy 2)

설명

JOI 国には N 人の議員がおり, 1 から N までの番号がつけられている.JOI 国の大臣であるあなたは,議員の中にいるスパイを探し出そうとしている.あなたは各議員 i ( \(1 \le i \le N\) ) について次のような情報を得た.

T i = 1 のとき,議員 i はスパイである.

T i = 2 のとき,議員 i はスパイではない.

T i = 3 のとき,議員 i がスパイであるかどうかは不明である.

更に聞き取り調査を行った結果,新たに M 個の情報を得ることができた. j 番目の聞き取り調査の情報 ( \(1 \le j \le M\) ) は,議員 A j ( 1 ≦ A j ≦ N ) が「議員 B j ( 1 ≦ B j ≦ N ) はスパイであり,かつ議員 C j ( 1 ≦ C j ≦ N ) はスパイでない」と証言したというものである.

ただし,議員 A j がスパイであれば, j 番目の聞き取り調査の情報における証言は事実とは異なる.すなわち,もし議員 A j がスパイであれば,「議員 B j はスパイである」「議員 C j はスパイでない」のうち,少なくとも一方は事実ではない.一方で,議員 A j がスパイでないとき, j 番目の聞き取り調査の情報における証言は事実かもしれないし,そうでないかもしれない.

各議員の情報と,聞き取り調査の結果が与えられるので,それら N + M 個の情報が矛盾しているかを判定し,矛盾していないなら,それぞれの議員がスパイかどうかを求めるプログラムを作成せよ. N + M 個の情報と合致する答えが複数存在する場合は,そのうちどれを出力してもよい.

제약

1 ≦ N ≦ 300 000 .

1 ≦ M ≦ 300 000 .

1 ≦ T i ≦ 3 ( \(1 \le i \le N\) ).

1 ≦ A j ≦ N ( \(1 \le j \le M\) ).

1 ≦ B j ≦ N ( \(1 \le j \le M\) ).

1 ≦ C j ≦ N ( \(1 \le j \le M\) ).

A j ≠ B j ( \(1 \le j \le M\) ).

A j ≠ C j ( \(1 \le j \le M\) ).

B j ≠ C j ( \(1 \le j \le M\) ).

( 7 点) \(N \le 16\) , \(M \le 100\) .

( 38 点) N ≦ 3 000 , M ≦ 3 000 .

( 55 点) 追加の制約はない.

입력 형식

入力は以下の形式で標準入力から与えられる.

N M

T 1 T 2 ... T N

A 1 B 1 C 1

A 2 B 2 C 2

:

A M B M C M

출력 형식

標準出力に出力せよ.

与えられた情報が矛盾している場合, -1 を 1 行で出力せよ.

そうでない場合,出力は N 行からなる. i 行目 ( \(1 \le i \le N\) ) には議員 i がスパイである場合 1 を,議員 i がスパイでない場合 2 を出力せよ. N + M 個の情報と合致する答えが複数存在する場合,そのうちどれを出力してもよい.

예제 1
입력
4 1
1 3 2 3
1 2 3
출력
1
2
2
1
예제 2
입력
4 2
2 1 3 1
4 3 1
2 4 3
출력
-1
예제 3
입력
3 2
1 2 2
2 1 3
2 3 1
출력
1
2
2
문제 정보

생성자가 기록되지 않았습니다.

출처 JOI 2021 Preliminary 2

평가 및 의견

スパイ 2 (Spy 2)

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

スパイ 2 (Spy 2)

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8