For problem statement at 1000-1999/1100-1199/1160-1169/1167/problemC.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1160-1169/1167/verifierC.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"os"
"strconv"
)
var parent []int
var size []int
func find(i int) int {
if parent[i] == i {
return i
}
parent[i] = find(parent[i])
return parent[i]
}
func union(i, j int) {
rootI := find(i)
rootJ := find(j)
if rootI != rootJ {
if size[rootI] < size[rootJ] {
rootI, rootJ = rootJ, rootI
}
parent[rootJ] = rootI
size[rootI] += size[rootJ]
}
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Buffer(make([]byte, 1024*1024), 10*1024*1024)
scanner.Split(bufio.ScanWords)
readInt := func() int {
scanner.Scan()
res := 0
for _, v := range scanner.Bytes() {
res = res*10 + int(v-'0')
}
return res
}
if !scanner.Scan() {
return
}
n := 0
for _, v := range scanner.Bytes() {
n = n*10 + int(v-'0')
}
m := readInt()
parent = make([]int, n+1)
size = make([]int, n+1)
for i := 1; i <= n; i++ {
parent[i] = i
size[i] = 1
}
for i := 0; i < m; i++ {
k := readInt()
if k > 0 {
first := readInt()
for j := 1; j < k; j++ {
u := readInt()
union(first, u)
}
}
}
out := bufio.NewWriter(os.Stdout)
for i := 1; i <= n; i++ {
out.WriteString(strconv.Itoa(size[find(i)]) + " ")
}
out.WriteByte('\n')
out.Flush()
}