← Home
For problem statement at 1000-1999/1200-1299/1280-1289/1280/problemC.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1280-1289/1280/verifierC.go ends with All tests passed! can you fix the verifier? package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	data, _ := io.ReadAll(os.Stdin)
	pos := 0
	nextInt := func() int {
		for pos < len(data) && data[pos] <= ' ' {
			pos++
		}
		if pos >= len(data) {
			return 0
		}
		res := 0
		for pos < len(data) && data[pos] > ' ' {
			res = res*10 + int(data[pos]-'0')
			pos++
		}
		return res
	}

	t := nextInt()
	if t == 0 {
		return
	}

	maxN := 600005
	head := make([]int, maxN)
	to := make([]int, 2*maxN)
	next := make([]int, 2*maxN)
	w := make([]int64, 2*maxN)
	order := make([]int, maxN)
	parent := make([]int, maxN)
	weightEdge := make([]int64, maxN)
	size := make([]int, maxN)
	q := make([]int, maxN)
	visited := make([]bool, maxN)

	for tc := 0; tc < t; tc++ {
		k := nextInt()
		n := 2 * k

		for i := 0; i < n; i++ {
			head[i] = -1
			visited[i] = false
			size[i] = 1
		}

		edgeCount := 0
		addEdge := func(u, v int, weight int64) {
			to[edgeCount] = v
			w[edgeCount] = weight
			next[edgeCount] = head[u]
			head[u] = edgeCount
			edgeCount++
		}

		for i := 0; i < n-1; i++ {
			u := nextInt() - 1
			v := nextInt() - 1
			weight := int64(nextInt())
			addEdge(u, v, weight)
			addEdge(v, u, weight)
		}

		qhead, qtail := 0, 0
		q[qtail] = 0
		qtail++
		visited[0] = true

		for qhead < qtail {
			u := q[qhead]
			qhead++
			order[qhead-1] = u

			for e := head[u]; e != -1; e = next[e] {
				v := to[e]
				if !visited[v] {
					visited[v] = true
					parent[v] = u
					weightEdge[v] = w[e]
					q[qtail] = v
					qtail++
				}
			}
		}

		var minSum, maxSum int64
		for i := n - 1; i > 0; i-- {
			u := order[i]
			p := parent[u]
			s := size[u]
			size[p] += s

			we := weightEdge[u]
			if s%2 != 0 {
				minSum += we
			}

			if s < n-s {
				maxSum += int64(s) * we
			} else {
				maxSum += int64(n-s) * we
			}
		}

		fmt.Printf("%d %d\n", minSum, maxSum)
	}
}