import sys

sys.setrecursionlimit(10**5)



class Node:

    # def __init__(self, val):

    def __init__(self):

        self.val = None

        self.color = None

        self.a = []



n = int(eval(input()))

nodes = []



for i in range(n):

    nodes.append(Node())

    # nodes.append(Node(i+1))



for i in range(n-1):

    u, v, w = list(map(int, input().split()))

    node1 = nodes[u-1]

    node2 = nodes[v-1]

    node1.val = u

    node2.val = v

    node1.a.append([node2, w])

    node2.a.append([node1, w])



# for i in range(n):

#     node = nodes[i]

#     for pair in node.a:

#         print(pair[0])

#         print(pair[1])



root = nodes[0]

root.color = True

nodeSet = set()



def traverse(node, distance):

    if node in nodeSet:

        return

    else:

        nodeSet.add(node)

    # print('# traverse: ' + str(node.val))

    for pair in node.a:

        adjNode = pair[0]

        dis = pair[1]

        if (distance + dis) % 2 == 0:

            adjNode.color = root.color

        else:

            adjNode.color = not root.color

        traverse(adjNode, distance + dis)



traverse(root, 0)



for i in range(n):

    node = nodes[i]

    if node.color:

        print((1))

    else:

        print((0))

import sys

sys.setrecursionlimit(10**5)



class Node:

    def __init__(self):

        self.val = None

        self.a = []



n = int(eval(input()))

nodes = []



for i in range(n):

    nodes.append(Node())



for i in range(n-1):

    u, v, w = list(map(int, input().split()))

    node1 = nodes[u-1]

    node2 = nodes[v-1]

    node1.a.append([node2, w])

    node2.a.append([node1, w])



root = nodes[0]

root.val = True

nodeSet = set()



def traverse(node):

    if node in nodeSet:

        return

    else:

        nodeSet.add(node)



    for pair in node.a:

        adjNode = pair[0]

        dis = pair[1]

        if dis % 2 == 0:

            adjNode.val = node.val

        else:

            adjNode.val = not node.val

        traverse(adjNode)



traverse(root)



for i in range(n):

    node = nodes[i]

    if node.val:

        print((1))

    else:

        print((0))





import sys

sys.setrecursionlimit(10**5)


class Node:
    # def __init__(self, val):
    def __init__(self):
        self.val = None
        self.color = None
        self.a = []


n = int(eval(input()))
nodes = []
for i in range(n):
    nodes.append(Node())
    # nodes.append(Node(i+1))
for i in range(n - 1):
    u, v, w = list(map(int, input().split()))
    node1 = nodes[u - 1]
    node2 = nodes[v - 1]
    node1.val = u
    node2.val = v
    node1.a.append([node2, w])
    node2.a.append([node1, w])
# for i in range(n):
#     node = nodes[i]
#     for pair in node.a:
#         print(pair[0])
#         print(pair[1])
root = nodes[0]
root.color = True
nodeSet = set()


def traverse(node, distance):
    if node in nodeSet:
        return
    else:
        nodeSet.add(node)
    # print('# traverse: ' + str(node.val))
    for pair in node.a:
        adjNode = pair[0]
        dis = pair[1]
        if (distance + dis) % 2 == 0:
            adjNode.color = root.color
        else:
            adjNode.color = not root.color
        traverse(adjNode, distance + dis)


traverse(root, 0)
for i in range(n):
    node = nodes[i]
    if node.color:
        print((1))
    else:
        print((0))

import sys

sys.setrecursionlimit(10**5)


class Node:
    def __init__(self):
        self.val = None
        self.a = []


n = int(eval(input()))
nodes = []
for i in range(n):
    nodes.append(Node())
for i in range(n - 1):
    u, v, w = list(map(int, input().split()))
    node1 = nodes[u - 1]
    node2 = nodes[v - 1]
    node1.a.append([node2, w])
    node2.a.append([node1, w])
root = nodes[0]
root.val = True
nodeSet = set()


def traverse(node):
    if node in nodeSet:
        return
    else:
        nodeSet.add(node)
    for pair in node.a:
        adjNode = pair[0]
        dis = pair[1]
        if dis % 2 == 0:
            adjNode.val = node.val
        else:
            adjNode.val = not node.val
        traverse(adjNode)


traverse(root)
for i in range(n):
    node = nodes[i]
    if node.val:
        print((1))
    else:
        print((0))

-    # def __init__(self, val): -        self.color = None -    # nodes.append(Node(i+1)) -    node1.val = u -    node2.val = v -# for i in range(n): -#     node = nodes[i] -#     for pair in node.a: -#         print(pair[0]) -#         print(pair[1]) -root.color = True +root.val = True -def traverse(node, distance): +def traverse(node): -    # print('# traverse: ' + str(node.val)) -        if (distance + dis) % 2 == 0: -            adjNode.color = root.color +        if dis % 2 == 0: +            adjNode.val = node.val -            adjNode.color = not root.color -        traverse(adjNode, distance + dis) +            adjNode.val = not node.val +        traverse(adjNode) -traverse(root, 0) +traverse(root) -    if node.color: +    if node.val: