No.1420 国勢調査 (Easy)
タグ : / 解いたユーザー数 112
作問者 : 57tggx / テスター : logx
問題文
ある王国には $N$ 個の町があり,それぞれには $1$ から $N$ までの番号が付いている.番号 $i$ ( $i = 1, 2, \ldots, N$ )の町には $X_i$ 軒の家が建っていて,今 $0 \leq X_i < 2^{30}$ であることだけがわかっている. この国の王は,どの町に家が何軒あるのか知りたいと思っている.
あるとき $M$ 人の旅人がこの国を訪れた. $j$ ( $j = 1, 2, \ldots, M$ )番目の旅人は,王国内の町のうち番号 $A_j$ の町と番号 $B_j$ の町の 2 つを回った.各旅人 $j$ は,王国を去るとき王に次の 2 つを報告した.
- 自分の回った町の番号 $A_j$ , $B_j$.
- 自分の回った 2 つの町の家の軒数の XOR をとった値 $Y_j$ .すなわち$$Y_j = X_{A_j} \oplus X_{B_j}$$
王は, $M$ 人の旅人の報告をもとに各町の家の軒数 $X_1, X_2, \ldots, X_N$ を割り出すことにした.
しかし,旅人の中には虚偽の報告をした者がいる可能性もある.
$M$ 人の旅人の報告全てと合致するような $X_1, X_2, \ldots, X_N$ の値の組が存在するならば,そのうちの一つを出力せよ.そうでないとき(旅人の報告に矛盾があるとき), $-1$ を出力せよ.
入力
$N$ $M$ $A_1$ $B_1$ $Y_1$ $A_2$ $B_2$ $Y_2$ $\vdots$ $A_M$ $B_M$ $Y_M$
制約:
- 入力は全て整数である.
- $1 \leq N \leq 10^5$
- $1 \leq M \leq 10^5$
- 各 $j = 1, 2, \ldots, M$ について:
- $1 \leq A_j < B_j \leq N$
- $0 \leq Y_i < 2^{30}$
出力
矛盾がなければ,改行区切りで
$X_1$ $X_2$ $\vdots$ $X_N$を出力せよ.ただし,全ての $i = 1, 2, \ldots, N$ について $0 \leq X_i < 2^{30}$ が成り立っていなければならない.また,複数ある場合はどれを出力してもよい.
矛盾があれば,
-1と出力せよ.
サンプル
サンプル1
入力
3 3 1 2 3 2 3 5 1 3 6
出力
2 1 4
町 $1$ , $2$ , $3$ にそれぞれ家が $2$ , $1$ , $4$ 軒建っているとする.
旅人 $1$ は町 $1$ , $2$ を訪れ, XOR は $2 \oplus 1 = 3$ となる.
旅人 $2$ は町 $2$ , $3$ を訪れ, XOR は $1 \oplus 4 = 5$ となる.
旅人 $3$ は町 $1$ , $3$ を訪れ, XOR は $2 \oplus 4 = 6$ となる.
よって $(X_1, X_2, X_3) = (2, 1, 4)$ は条件を満たしている.他に $(X_1, X_2, X_3) = (0, 3, 6)$ などが考えられ,どれを出力してもよい.
サンプル2
入力
2 2 1 2 1 1 2 2
出力
-1
旅人 $1$ , $2$ は同じ町を訪れていながら異なる値を報告しており,明らかに矛盾である.
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。