← Home
For problem statement at 0-999/700-799/770-779/770/problemC.txt this is a correct solution, but verifier at 0-999/700-799/770-779/770/verifierC.go ends with All 100 tests passed can you fix the verifier? ```go
package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n, k int
	if _, err := fmt.Fscan(in, &n, &k); err != nil {
		return
	}

	mains := make([]int, k)
	for i := 0; i < k; i++ {
		fmt.Fscan(in, &mains[i])
	}

	prereqs := make([][]int, n+1)
	adj := make([][]int, n+1)

	for i := 1; i <= n; i++ {
		var t int
		fmt.Fscan(in, &t)
		if t > 0 {
			prereqs[i] = make([]int, t)
			for j := 0; j < t; j++ {
				var x int
				fmt.Fscan(in, &x)
				prereqs[i][j] = x
				adj[x] = append(adj[x], i)
			}
		}
	}

	needed := make([]bool, n+1)
	stack := make([]int, 0)

	for _, m := range mains {
		if !needed[m] {
			needed[m] = true
			stack = append(stack, m)
			for len(stack) > 0 {
				u := stack[len(stack)-1]
				stack = stack[:len(stack)-1]
				for _, p := range prereqs[u] {
					if !needed[p] {
						needed[p] = true
						stack = append(stack, p)
					}
				}
			}
		}
	}

	cnt := 0
	for i := 1; i <= n; i++ {
		if needed[i] {
			cnt++
		}
	}

	indeg := make([]int, n+1)
	for i := 1; i <= n; i++ {
		if !needed[i] {
			continue
		}
		for _, p := range prereqs[i] {
			if needed[p] {
				indeg[i]++
			}
		}
	}

	q := make([]int, 0)
	for i := 1; i <= n; i++ {
		if needed[i] && indeg[i] == 0 {
			q = append(q, i)
		}
	}

	order := make([]int, 0, cnt)
	head := 0
	for head < len(q) {
		u := q[head]
		head++
		order = append(order, u)
		for _, v := range adj[u] {
			if !needed[v] {
				continue
			}
			indeg[v]--
			if indeg[v] == 0 {
				q = append(q, v)
			}
		}
	}

	if len(order) != cnt {
		fmt.Fprintln(out, -1)
		return
	}

	fmt.Fprintln(out, cnt)
	for i := 0; i < cnt; i++ {
		if i > 0 {
			fmt.Fprint(out, " ")
		}
		fmt.Fprint(out, order[i])
	}
	fmt.Fprintln(out)
}
```