#include<cstdio>
#define maxn 100050
using namespace std;
struct enode{
	int y,nxt,z;
}e[maxn*2];
int tot=0;
int dis[maxn],first[maxn];
void adde(int x,int y,int z){
	e[tot].nxt=first[x];
	e[tot].y=y;
	e[tot].z=z;
	first[x]=tot++;
}
void dfs(int x,int fa){
	for (int i=first[x];i>=0;i=e[i].nxt){
		int y=e[i].y;
		if (y!=fa){
			dis[y]=(dis[x]+e[i].z)%2;
			dfs(y,x);
		}
	}
}
int main(){
	int n;
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
	first[i]=-1;
	for (int i=1;i<n;i++){
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		adde(x,y,z),adde(y,x,z);
	}
	dfs(1,0);
	for (int i=1;i<=n;i++)
	printf("%d\n",dis[i]);
	return 0;
}