using System;
using System.Collections.Generic;
using System.Linq;

namespace AtCoder.Question
{
    public class QuestionD
    {
        public static void Main(string[] args)
        {
            var n = ReadHelper.ReadValue<int>();
            var uvwi = new List<(int u, int v, long w)>(n);
            for (int i = 0; i < n - 1; i++)
            {
                var uvw = ReadHelper.ReadValue<int, int, long>();
                uvwi.Add(uvw);
            }
            bool first = true;
            var result = new Dictionary<int, int>(Enumerable.Range(1, n).Select(x => new KeyValuePair<int, int>(x, -1)));
            while (result.Any(x => x.Value == -1))
            {
                foreach (var uvw in uvwi)
                {
                    if (first)
                    {
                        result[uvw.u] = 0;
                        result[uvw.v] = (int)(uvw.w % 2);
                        first = false;
                        continue;
                    }
                    if ((result[uvw.u] == -1 && result[uvw.v] == -1) || (result[uvw.u] != -1 && result[uvw.v] != -1))
                    {
                        continue;
                    }
                    if (result[uvw.u] == -1)
                    {
                        var v = result[uvw.v];
                        var antiV = result[uvw.v] == 0 ? 1 : 0;
                        result[uvw.u] = uvw.w % 2 == 0 ? v : antiV;
                    }
                    else
                    {
                        var u = result[uvw.u];
                        var antiU = result[uvw.u] == 0 ? 1 : 0;
                        result[uvw.v] = uvw.w % 2 == 0 ? u : antiU;
                    }
                }
            }
            foreach (var item in result)
            {
                Console.WriteLine(item.Value);
            }
        }

        static class ReadHelper
        {
            internal static T ReadValue<T>()
            {
                return (T)Convert.ChangeType(Console.ReadLine(), typeof(T));
            }
            internal static (T1, T2) ReadValue<T1, T2>()
            {
                var input = Console.ReadLine().Split(' ');
                return ((T1)Convert.ChangeType(input[0], typeof(T1)), (T2)Convert.ChangeType(input[1], typeof(T2)));
            }
            internal static (T1, T2, T3) ReadValue<T1, T2, T3>()
            {
                var input = Console.ReadLine().Split(' ');
                return ((T1)Convert.ChangeType(input[0], typeof(T1)), (T2)Convert.ChangeType(input[1], typeof(T2)), (T3)Convert.ChangeType(input[2], typeof(T3)));
            }
            internal static (T1, T2, T3, T4) ReadValue<T1, T2, T3, T4>()
            {
                var input = Console.ReadLine().Split(' ');
                return ((T1)Convert.ChangeType(input[0], typeof(T1)), (T2)Convert.ChangeType(input[1], typeof(T2)), (T3)Convert.ChangeType(input[2], typeof(T3)), (T4)Convert.ChangeType(input[3], typeof(T4)));
            }
            internal static T[] ReadValues<T>()
            {
                var input = Console.ReadLine().Split(' ');
                return input.Select(x => (T)Convert.ChangeType(x, typeof(T))).ToArray();
            }
        }

        static class MathAlgorithm
        {
            internal static bool IsPrime(long n)
            {
                if (n == 2) return true;
                if (n < 2 || n % 2 == 0) return false;
                var sqrt = Math.Sqrt(n);
                for (int i = 3; i <= sqrt; i += 2) if (n % i == 0) return false;
                return true;
            }
            internal static IEnumerable<long> EnumeratePrimes(long n)
            {
                var i = 2L;
                while (i * i <= n)
                {
                    if (n % i == 0)
                    {
                        n /= i;
                        yield return i;
                    }
                    else
                    {
                        i += i == 2 ? 1 : 2;
                    }
                }
                if (n != 1) yield return n;
            }
        }
    }
}


Measured memory_bytes: 53048