from collections import deque

n = int(input())

g = [[] for _ in range(n)]
# 0indexに直している
for i in range(n - 1):
    u, v, w = map(int, input().split())
    g[u - 1].append((v - 1, w))
    g[v - 1].append((u - 1, w))

"""
根から各頂点への距離をd_iとする
2頂点u,vについて、その最小共通祖先をwとすると
uとvの距離=d_u+d_v-2d_w
第3項は常に偶数
d_uとd_vの偶奇が等しければ全体は偶数、偶奇が異なれば全体は奇数
例えば、d_iが偶数なら白に、奇数なら黒に塗るとすれば条件を満たす
"""

dq = deque([0])

# 各頂点について、根からの距離
# 頂点0を根とする
dist_list = [-1] * n
dist_list[0] = 0

# BFS
while dq:
    now = dq.popleft()
    # tと繋がっている各頂点について
    for info in g[now]:
        next = info[0]
        d = info[1]
        if dist_list[next] == -1:
            # 根からtまでの距離 + tから次への距離
            dist_list[next] = dist_list[now] + d
            dq.append(next)

# 偶数なら白、奇数なら黒とする。白黒は逆でも良い。
for i in dist_list:
    if i % 2 == 0:
        print(0)
    else:
        print(1) from collections import deque n = int(input()) n int(input()) int input() input [] for _ in range(n) for _ in range(n) _ range(n) range n for _ in range(n) [] g = [[] for _ in range(n)] g [[] for _ in range(n)] for i in range(n - 1):
    u, v, w = map(int, input().split())
    g[u - 1].append((v - 1, w))
    g[v - 1].append((u - 1, w)) i range(n - 1) range n - 1 n 1 u, v, w = map(int, input().split()) u map(int, input().split()) map int input().split() ().split () input split v w g[u - 1].append((v - 1, w)) [u - 1].append [u - 1] g u - 1 u 1 append (v - 1, w) v - 1 v 1 w g[v - 1].append((u - 1, w)) [v - 1].append [v - 1] g v - 1 v 1 append (u - 1, w) u - 1 u 1 w """
根から各頂点への距離をd_iとする
2頂点u,vについて、その最小共通祖先をwとすると
uとvの距離=d_u+d_v-2d_w
第3項は常に偶数
d_uとd_vの偶奇が等しければ全体は偶数、偶奇が異なれば全体は奇数
例えば、d_iが偶数なら白に、奇数なら黒に塗るとすれば条件を満たす
""" dq = deque([0]) dq deque([0]) deque [0] 0 dist_list = [-1] * n dist_list [-1] * n [-1] -1 n dist_list[0] = 0 dist_list[0] dist_list 0 0 while dq:
    now = dq.popleft()
    # tと繋がっている各頂点について
    for info in g[now]:
        next = info[0]
        d = info[1]
        if dist_list[next] == -1:
            # 根からtまでの距離 + tから次への距離
            dist_list[next] = dist_list[now] + d
            dq.append(next)

# 偶数なら白、奇数なら黒とする。白黒は逆でも良い。 dq now = dq.popleft() now dq.popleft() dq.popleft dq popleft for info in g[now]:
        next = info[0]
        d = info[1]
        if dist_list[next] == -1:
            # 根からtまでの距離 + tから次への距離
            dist_list[next] = dist_list[now] + d
            dq.append(next)

# 偶数なら白、奇数なら黒とする。白黒は逆でも良い。 info g[now] g now next = info[0] next info[0] info 0 d = info[1] d info[1] info 1 if dist_list[next] == -1:
            # 根からtまでの距離 + tから次への距離
            dist_list[next] = dist_list[now] + d
            dq.append(next)

# 偶数なら白、奇数なら黒とする。白黒は逆でも良い。 dist_list[next] == -1 dist_list[next] dist_list next -1 dist_list[next] = dist_list[now] + d dist_list[next] dist_list next dist_list[now] + d dist_list[now] dist_list now d dq.append(next) dq.append dq append next for i in dist_list:
    if i % 2 == 0:
        print(0)
    else:
        print(1) i dist_list if i % 2 == 0:
        print(0)
    else:
        print(1) i % 2 == 0 i % 2 i 2 0 print(0) print 0 print(1) print 1 v, w = map(int, input().split()) map(int, input().split()) v d = info[1] info[1] d next = info[0] info[0] next u, v, w = map(int, input().split()) map(int, input().split()) u dist_list = [-1] * n [-1] * n dist_list now = dq.popleft() dq.popleft() now g = [[] for _ in range(n)] [[] for _ in range(n)] g w = map(int, input().split()) map(int, input().split()) w dq = deque([0]) deque([0]) dq n = int(input()) int(input()) n
from collections import deque

n = int(input())

g = [[] for _ in range(n)]
# 0indexに直している
for i in range(n - 1):
    u, v, w = map(int, input().split())
    g[u - 1].append((v - 1, w))
    g[v - 1].append((u - 1, w))

"""
根から各頂点への距離をd_iとする
2頂点u,vについて、その最小共通祖先をwとすると
uとvの距離=d_u+d_v-2d_w
第3項は常に偶数
d_uとd_vの偶奇が等しければ全体は偶数、偶奇が異なれば全体は奇数
例えば、d_iが偶数なら白に、奇数なら黒に塗るとすれば条件を満たす
"""

dq = deque([0])

# 各頂点について、根からの距離
# 頂点0を根とする
dist_list = [-1] * n
dist_list[0] = 0

# BFS
while dq:
    now = dq.popleft()
    # tと繋がっている各頂点について
    for info in g[now]:
        next = info[0]
        d = info[1]
        if dist_list[next] == -1:
            # 根からtまでの距離 + tから次への距離
            dist_list[next] = dist_list[now] + d
            dq.append(next)

# 偶数なら白、奇数なら黒とする。白黒は逆でも良い。
for i in dist_list:
    if i % 2 == 0:
        print(0)
    else:
        print(1)
