← Home
package main

import (
	"bytes"
	"io"
	"os"
	"strconv"
)

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int {
		for idx < len(data) && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
			idx++
		}
		sign := 1
		if data[idx] == '-' {
			sign = -1
			idx++
		}
		val := 0
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int(data[idx]-'0')
			idx++
		}
		return sign * val
	}

	t := nextInt()
	var out bytes.Buffer

	for ; t > 0; t-- {
		n := nextInt()
		g := make([][]int, n)
		for i := 0; i < n-1; i++ {
			u := nextInt() - 1
			v := nextInt() - 1
			g[u] = append(g[u], v)
			g[v] = append(g[v], u)
		}

		color := make([]int, n)
		for i := range color {
			color[i] = -1
		}
		stack := []int{0}
		color[0] = 0

		for len(stack) > 0 {
			v := stack[len(stack)-1]
			stack = stack[:len(stack)-1]
			for _, to := range g[v] {
				if color[to] == -1 {
					color[to] = color[v] ^ 1
					stack = append(stack, to)
				}
			}
		}

		for i := 0; i < n; i++ {
			if i > 0 {
				out.WriteByte(' ')
			}
			val := len(g[i])
			if color[i] == 1 {
				val = -val
			}
			out.WriteString(strconv.Itoa(val))
		}
		out.WriteByte('\n')
	}

	os.Stdout.Write(out.Bytes())
}