← Home
For problem statement at 0-999/300-399/360-369/369/problemC.txt this is a correct solution, but verifier at 0-999/300-399/360-369/369/verifierC.go ends with All tests passed can you fix the verifier? package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	buffer := make([]byte, 0, 64*1024)
	scanner.Buffer(buffer, 1024*1024)

	if !scanner.Scan() {
		return
	}
	n, _ := strconv.Atoi(scanner.Text())

	type Edge struct {
		to int
		t  int
	}

	adj := make([][]Edge, n+1)
	for i := 0; i < n-1; i++ {
		scanner.Scan()
		u, _ := strconv.Atoi(scanner.Text())
		scanner.Scan()
		v, _ := strconv.Atoi(scanner.Text())
		scanner.Scan()
		t, _ := strconv.Atoi(scanner.Text())
		adj[u] = append(adj[u], Edge{v, t})
		adj[v] = append(adj[v], Edge{u, t})
	}

	var ans []int

	var dfs func(u, p, t int) int
	dfs = func(u, p, t int) int {
		selected := 0
		for _, e := range adj[u] {
			if e.to != p {
				selected += dfs(e.to, u, e.t)
			}
		}
		if selected == 0 && t == 2 {
			ans = append(ans, u)
			selected++
		}
		return selected
	}

	dfs(1, 0, 1)

	fmt.Println(len(ans))
	if len(ans) > 0 {
		for i, v := range ans {
			if i > 0 {
				fmt.Print(" ")
			}
			fmt.Print(v)
		}
		fmt.Println()
	}
}