from collections import deque
N=int(input())
G=[[] for _ in range(N)]
for i in range(N-1):
	u, v, w = map(int, input().split())
	u,v=u-1,v-1
	G[u].append([v,w])
	G[v].append([u,w])
#print(G) #[[[1, 2]], [[0, 2], [2, 1]], [[1, 1]]]
color=[-1]*N
que=deque([0])
color[0]=0

while que:#dfs
	p=que.popleft()#直近で追加したグラフの頂点を取得
	for q, W in G[p]:#結合しているグラフの頂点を参照
		if color[q]==-1:#塗られていないなら
			color[q]=(color[p]+W)%2
			que.append(q)
print(*color, sep="\n") 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())
	u,v=u-1,v-1
	G[u].append([v,w])
	G[v].append([u,w])
#print(G) #[[[1, 2]], [[0, 2], [2, 1]], [[1, 1]]] 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 u,v=u-1,v-1 u u-1 u 1 v v-1 v 1 G[u].append([v,w]) [u].append [u] G u append [v,w] v w G[v].append([u,w]) [v].append [v] G v append [u,w] u w color=[-1]*N color [-1]*N [-1] -1 N que=deque([0]) que deque([0]) deque [0] 0 color[0]=0 color[0] color 0 0 while que:#dfs
	p=que.popleft()#直近で追加したグラフの頂点を取得
	for q, W in G[p]:#結合しているグラフの頂点を参照
		if color[q]==-1:#塗られていないなら
			color[q]=(color[p]+W)%2
			que.append(q) que p=que.popleft() p que.popleft() que.popleft que popleft for q, W in G[p]:#結合しているグラフの頂点を参照
		if color[q]==-1:#塗られていないなら
			color[q]=(color[p]+W)%2
			que.append(q) q W G[p] G p if color[q]==-1:#塗られていないなら
			color[q]=(color[p]+W)%2
			que.append(q) color[q]==-1 color[q] color q -1 color[q]=(color[p]+W)%2 color[q] color q (color[p]+W)%2 color[p]+W color[p] color p W 2 que.append(q) que.append que append q print(*color, sep="\n") print *color color sep="\n" sep "\n" v, w = map(int, input().split()) map(int, input().split()) v v=u-1,v-1 v-1 v G=[[] for _ in range(N)] [[] for _ in range(N)] G w = map(int, input().split()) map(int, input().split()) w color=[-1]*N [-1]*N color N=int(input()) int(input()) N u, v, w = map(int, input().split()) map(int, input().split()) u u,v=u-1,v-1 u-1 u que=deque([0]) deque([0]) que p=que.popleft() que.popleft() p
from collections import deque
N=int(input())
G=[[] for _ in range(N)]
for i in range(N-1):
	u, v, w = map(int, input().split())
	u,v=u-1,v-1
	G[u].append([v,w])
	G[v].append([u,w])
#print(G) #[[[1, 2]], [[0, 2], [2, 1]], [[1, 1]]]
color=[-1]*N
que=deque([0])
color[0]=0

while que:#dfs
	p=que.popleft()#直近で追加したグラフの頂点を取得
	for q, W in G[p]:#結合しているグラフの頂点を参照
		if color[q]==-1:#塗られていないなら
			color[q]=(color[p]+W)%2
			que.append(q)
print(*color, sep="\n")