← Home
For problem statement at 1000-1999/1600-1699/1620-1629/1627/problemC.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1620-1629/1627/verifierC.go ends with All 100 tests passed can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var t int
	fmt.Fscan(in, &t)
	for test := 0; test < t; test++ {
		var n int
		fmt.Fscan(in, &n)

		head := make([]int, n+1)
		for i := 1; i <= n; i++ {
			head[i] = -1
		}
		to := make([]int, 2*n)
		next := make([]int, 2*n)
		edgeIdx := make([]int, 2*n)
		deg := make([]int, n+1)

		edgeCnt := 0
		addEdge := func(u, v, idx int) {
			to[edgeCnt] = v
			edgeIdx[edgeCnt] = idx
			next[edgeCnt] = head[u]
			head[u] = edgeCnt
			edgeCnt++
		}

		possible := true
		for i := 1; i < n; i++ {
			var u, v int
			fmt.Fscan(in, &u, &v)
			addEdge(u, v, i)
			addEdge(v, u, i)
			deg[u]++
			deg[v]++
			if deg[u] > 2 || deg[v] > 2 {
				possible = false
			}
		}

		if !possible {
			fmt.Fprintln(out, -1)
			continue
		}

		start := 1
		for i := 1; i <= n; i++ {
			if deg[i] == 1 {
				start = i
				break
			}
		}

		ans := make([]int, n)
		u := start
		p := -1
		val := 2
		for {
			moved := false
			for e := head[u]; e != -1; e = next[e] {
				v := to[e]
				if v != p {
					ans[edgeIdx[e]] = val
					val = 5 - val
					p = u
					u = v
					moved = true
					break
				}
			}
			if !moved {
				break
			}
		}

		for i := 1; i < n; i++ {
			if i > 1 {
				fmt.Fprint(out, " ")
			}
			fmt.Fprint(out, ans[i])
		}
		fmt.Fprintln(out)
	}
}