For problem statement at 1000-1999/1000-1099/1020-1029/1027/problemF.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1020-1029/1027/verifierF.go ends with All tests passed can you fix the verifier? package main
import (
"fmt"
"io"
"os"
"sort"
)
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
}
n := nextInt()
if n == 0 {
return
}
a := make([]int, n)
b := make([]int, n)
vals := make([]int, 0, 2*n)
for i := 0; i < n; i++ {
a[i] = nextInt()
b[i] = nextInt()
vals = append(vals, a[i], b[i])
}
sort.Ints(vals)
unique := make([]int, 0, len(vals))
if len(vals) > 0 {
unique = append(unique, vals[0])
for i := 1; i < len(vals); i++ {
if vals[i] != vals[i-1] {
unique = append(unique, vals[i])
}
}
}
m := len(unique)
parent := make([]int, m)
V_count := make([]int, m)
E_count := make([]int, m)
max1 := make([]int, m)
max2 := make([]int, m)
for i := 0; i < m; i++ {
parent[i] = i
V_count[i] = 1
E_count[i] = 0
max1[i] = unique[i]
max2[i] = 0
}
var find func(int) int
find = func(i int) int {
root := i
for root != parent[root] {
root = parent[root]
}
curr := i
for curr != root {
nxt := parent[curr]
parent[curr] = root
curr = nxt
}
return root
}
for i := 0; i < n; i++ {
u := sort.SearchInts(unique, a[i])
v := sort.SearchInts(unique, b[i])
pu := find(u)
pv := find(v)
if pu != pv {
parent[pu] = pv
V_count[pv] += V_count[pu]
E_count[pv] += E_count[pu] + 1
m1, m2 := max1[pv], max2[pv]
n1, n2 := max1[pu], max2[pu]
if n1 > m1 {
m2 = m1
m1 = n1
if n2 > m2 {
m2 = n2
}
} else {
if n1 > m2 {
m2 = n1
}
}
max1[pv] = m1
max2[pv] = m2
} else {
E_count[pv]++
}
}
ans := 0
for i := 0; i < m; i++ {
if parent[i] == i && E_count[i] > 0 {
if E_count[i] > V_count[i] {
fmt.Println("-1")
return
}
var cur int
if E_count[i] == V_count[i] {
cur = max1[i]
} else if E_count[i] == V_count[i]-1 {
cur = max2[i]
}
if cur > ans {
ans = cur
}
}
}
fmt.Println(ans)
}