#include <bits/stdc++.h>
using namespace std;

const int MAX = 1e5;

vector<pair<int, int>> G[MAX];

int a[MAX];

void dfs(int v, int prev) {
	for (auto e : G[v]) if (e.first != prev) {
		a[e.first] = a[v] ^ (e.second & 1);
		dfs(e.first, v);
	}
}

int main()
{
	int N;
	cin >> N;
	for (int i = 0; i < N - 1; i++) {
		int u, v, w;
		cin >> u >> v >> w; --u, --v;
		G[u].emplace_back(v, w & 1);
		G[v].emplace_back(u, w & 1);
	}
	a[0] = 0;
	dfs(0, -1);
	for (int i = 0; i < N; i++) {
		puts(a[i] ? "1" : "0");
	}
	return 0;
}
