ABC126 D - Even Relation
https://atcoder.jp/contests/abc126/tasks/abc126_d
解答
code: python
N = int(input())
T = [[] for i in range(N)]
for i in range(N - 1):
u, v, w = map(int, input().split())
u, v = u - 1, v - 1
Tu.append(v, w)
Tv.append(u, w)
# print(T)
# [1, 2, 0, 2], [2, 1, 1, 1]
# この問題の制約下では、塗り分け方が必ず1つは存在する
# 頂点iを何色で塗るか
ans = -1 * N
# 頂点1は白で塗る
stack = 0, 0
while stack:
n, color = stack.pop()
ansn = color
for to, w in Tn:
# 既に塗っていたら
if ansto != -1:
continue
if w % 2 == 0:
stack.append(to, color)
# 辺の重みが奇数なら次は違う色で塗る
else:
stack.append(to, color ^ 1)
print(*ans, sep='\n')
テーマ
#graph
蟻本 2-5 二部グラフ判定
メモ
ABC126 D - Even Relation