← Home
For problem statement at 1000-1999/1400-1499/1460-1469/1468/problemM.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1460-1469/1468/verifierM.go ends with wrong answer on case 6
input:
1
4
4 6 7 10 6
1 6
1 10
2 2 1
expected:
1 1

got:
2 1

exit status 1 can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	buf, _ := io.ReadAll(os.Stdin)
	pos := 0
	nextInt := func() int {
		for pos < len(buf) && buf[pos] <= ' ' {
			pos++
		}
		if pos >= len(buf) {
			return 0
		}
		res := 0
		for pos < len(buf) && buf[pos] > ' ' {
			res = res*10 + int(buf[pos]-'0')
			pos++
		}
		return res
	}

	if pos >= len(buf) {
		return
	}

	t := nextInt()
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	for tc := 0; tc < t; tc++ {
		n := nextInt()

		elementID := make(map[int]int)
		m := 0

		sets := make([][]int, n)
		for i := 0; i < n; i++ {
			k := nextInt()
			sets[i] = make([]int, k)
			for j := 0; j < k; j++ {
				val := nextInt()
				if id, exists := elementID[val]; exists {
					sets[i][j] = id
				} else {
					elementID[val] = m
					sets[i][j] = m
					m++
				}
			}
		}

		V := n + m
		adj := make([][]int, V)
		deg := make([]int, V)

		for i := 0; i < n; i++ {
			for _, el := range sets[i] {
				u := i
				v := n + el
				adj[u] = append(adj[u], v)
				adj[v] = append(adj[v], u)
				deg[u]++
				deg[v]++
			}
		}

		outAdj := make([][]int, V)
		for i := 0; i < V; i++ {
			for _, j := range adj[i] {
				if deg[i] < deg[j] || (deg[i] == deg[j] && i < j) {
					outAdj[i] = append(outAdj[i], j)
				}
			}
		}

		seenU := make([]int, V)
		for i := range seenU {
			seenU[i] = -1
		}
		seenV := make([]int, V)

		ans1, ans2 := -1, -1
		found := false

		for u := 0; u < V; u++ {
			for _, v := range adj[u] {
				for _, w := range outAdj[v] {
					if deg[u] < deg[w] || (deg[u] == deg[w] && u < w) {
						if seenU[w] == u {
							if u < n {
								ans1, ans2 = u, w
							} else {
								ans1, ans2 = v, seenV[w]
							}
							found = true
							break
						} else {
							seenU[w] = u
							seenV[w] = v
						}
					}
				}
				if found {
					break
				}
			}
			if found {
				break
			}
		}

		if found {
			fmt.Fprintf(writer, "%d %d\n", ans1+1, ans2+1)
		} else {
			fmt.Fprintln(writer, "-1")
		}
	}
}