'use strict'

let par;

function root(x){
    if(par[x]==x) return x;
    return par[x] = root(par[x]);
}
function unite(x,y){
    let rx = root(x);
    let ry = root(y);
    //console.log('unite',x,y,rx,ry)
    if(rx==ry) return;
    par[rx] = ry;
}
function same(x,y){
    let rx = root(x);
    let ry = root(y);
    return rx == ry;
}


function Main(input){
    let temp = input.trim().split('\n');
    let n = parseInt(temp[0]);

    par = new Array(n+1);

    for(let i=0;i<=n;i++){
        par[i] = i;
    }
    let temp2;
    let u,v,w;
    for(let i=1;i<n;i++){
        temp2 = temp[i].split(' ').map((v)=>parseInt(v));
        u = temp2[0];
        v = temp2[1];
        w = temp2[2];

        //console.log('---------------');
        //console.log(u,v,w);
        //console.log(par);
        if( (w%2) == 1 ){//奇数
            if(same(u,0)){
                unite(u,0);
            }else{
                unite(v,0);
            }
        }else{//偶数
            unite(u,v);
        }
        //console.log('↓');
        //console.log(par);
    }
    let ans='';
    for(let i=1;i<=n-1;i++){
        if(same(i,0)) ans+='0\n'
        else ans+='1\n';
    }
    if(same(n,0)) ans+='0\n'
    else ans+='1\n';
    console.log(ans);

}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
