← Home
For problem statement at 0-999/800-899/810-819/813/problemC.txt this is a correct solution, but verifier at 0-999/800-899/810-819/813/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)
	buf := make([]byte, 1024*1024)
	scanner.Buffer(buf, 1024*1024)

	scanInt := func() int {
		scanner.Scan()
		n, _ := strconv.Atoi(scanner.Text())
		return n
	}

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

	adj := make([][]int, n+1)
	for i := 0; i < n-1; i++ {
		u := scanInt()
		v := scanInt()
		adj[u] = append(adj[u], v)
		adj[v] = append(adj[v], u)
	}

	bfs := func(start int) []int {
		dist := make([]int, n+1)
		for i := range dist {
			dist[i] = -1
		}
		queue := make([]int, 0, n)
		queue = append(queue, start)
		dist[start] = 0
		for head := 0; head < len(queue); head++ {
			u := queue[head]
			for _, v := range adj[u] {
				if dist[v] == -1 {
					dist[v] = dist[u] + 1
					queue = append(queue, v)
				}
			}
		}
		return dist
	}

	distA := bfs(1)
	distB := bfs(x)

	ans := 0
	for i := 1; i <= n; i++ {
		if distB[i] < distA[i] {
			if distA[i] > ans {
				ans = distA[i]
			}
		}
	}

	fmt.Println(ans * 2)
}