← Home
For problem statement at 1000-1999/1600-1699/1690-1699/1695/problemD1.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1690-1699/1695/verifierD1.go ends with All tests passed can you fix the verifier? ```go
package main

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

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

	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	for i := 0; i < t; i++ {
		solve(reader, writer)
	}
}

func solve(r *bufio.Reader, w *bufio.Writer) {
	var n int
	fmt.Fscan(r, &n)

	adj := make([][]int, n+1)
	deg := make([]int, n+1)
	for i := 0; i < n-1; i++ {
		var u, v int
		fmt.Fscan(r, &u, &v)
		adj[u] = append(adj[u], v)
		adj[v] = append(adj[v], u)
		deg[u]++
		deg[v]++
	}

	if n == 1 {
		fmt.Fprintln(w, 0)
		return
	}

	majors := make([]bool, n+1)
	majorCount := 0
	for i := 1; i <= n; i++ {
		if deg[i] >= 3 {
			majors[i] = true
			majorCount++
		}
	}

	if majorCount == 0 {
		fmt.Fprintln(w, 1)
		return
	}

	ans := 0
	for i := 1; i <= n; i++ {
		if majors[i] {
			legs := 0
			for _, neighbor := range adj[i] {
				if !hasMajor(neighbor, i, adj, majors) {
					legs++
				}
			}
			if legs > 0 {
				ans += legs - 1
			}
		}
	}
	fmt.Fprintln(w, ans)
}

func hasMajor(u, p int, adj [][]int, majors []bool) bool {
	if majors[u] {
		return true
	}
	for _, v := range adj[u] {
		if v != p {
			if hasMajor(v, u, adj, majors) {
				return true
			}
		}
	}
	return false
}
```