For problem statement at 0-999/0-99/20-29/23/problemE.txt this is a correct solution, but verifier at 0-999/0-99/20-29/23/verifierE.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"math/big"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
if n == 1 {
fmt.Println(1)
return
}
adj := make([][]int, n+1)
for i := 0; i < n-1; i++ {
scanner.Scan()
u, _ := strconv.Atoi(scanner.Text())
scanner.Scan()
v, _ := strconv.Atoi(scanner.Text())
adj[u] = append(adj[u], v)
adj[v] = append(adj[v], u)
}
sz := make([]int, n+1)
dp := make([][]*big.Int, n+1)
var dfs func(int, int)
dfs = func(u, p int) {
sz[u] = 1
dp[u] = make([]*big.Int, 2)
dp[u][1] = big.NewInt(1)
for _, v := range adj[u] {
if v == p {
continue
}
dfs(v, u)
newSz := sz[u] + sz[v]
newDp := make([]*big.Int, newSz+1)
for s := 1; s <= sz[u]; s++ {
if dp[u][s] == nil {
continue
}
for t := 1; t <= sz[v]; t++ {
if dp[v][t] == nil {
continue
}
prod1 := new(big.Int).Mul(dp[u][s], dp[v][t])
if newDp[s+t] == nil || newDp[s+t].Cmp(prod1) < 0 {
newDp[s+t] = prod1
}
prod2 := new(big.Int).Mul(prod1, big.NewInt(int64(t)))
if newDp[s] == nil || newDp[s].Cmp(prod2) < 0 {
newDp[s] = prod2
}
}
}
dp[u] = newDp
sz[u] = newSz
dp[v] = nil
}
}
dfs(1, 0)
ans := big.NewInt(0)
for s := 1; s <= sz[1]; s++ {
if dp[1][s] != nil {
cand := new(big.Int).Mul(dp[1][s], big.NewInt(int64(s)))
if ans.Cmp(cand) < 0 {
ans = cand
}
}
}
fmt.Println(ans.String())
}