← 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 "fmt"

func main() {
	var n, k int
	fmt.Scan(&n, &k)
	mains := make([]int, k)
	for i := 0; i < k; i++ {
		fmt.Scan(&mains[i])
	}
	adjG := make([][]int, n+1)
	adjR := make([][]int, n+1)
	indegree := make([]int, n+1)
	for i := 1; i <= n; i++ {
		var ti int
		fmt.Scan(&ti)
		for j := 0; j < ti; j++ {
			var x int
			fmt.Scan(&x)
			adjG[x] = append(adjG[x], i)
			adjR[i] = append(adjR[i], x)
			indegree[i]++
		}
	}
	visited := make([]bool, n+1)
	q := []int{}
	var countS int
	for _, m := range mains {
		if !visited[m] {
			visited[m] = true
			q = append(q, m)
			countS++
		}
	}
	head := 0
	for head < len(q) {
		u := q[head]
		head++
		for _, v := range adjR[u] {
			if !visited[v] {
				visited[v] = true
				q = append(q, v)
				countS++
			}
		}
	}
	tq := []int{}
	for i := 1; i <= n; i++ {
		if visited[i] && indegree[i] == 0 {
			tq = append(tq, i)
		}
	}
	order := []int{}
	processed := 0
	thead := 0
	for thead < len(tq) {
		u := tq[thead]
		thead++
		order = append(order, u)
		processed++
		for _, v := range adjG[u] {
			if visited[v] {
				indegree[v]--
				if indegree[v] == 0 {
					tq = append(tq, v)
				}
			}
		}
	}
	if processed != countS {
		fmt.Println(-1)
	} else {
		fmt.Println(countS)
		for i, c := range order {
			if i > 0 {
				fmt.Print(" ")
			}
			fmt.Print(c)
		}
		fmt.Println()
	}
}
```