For problem statement at 1000-1999/1600-1699/1680-1689/1682/problemE.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1680-1689/1682/verifierE.go ends with case 1 failed: expected "1\n2\n3\n4" got "1 2 3 4"
input:
5 4
3 4 5 1 2
1 3
1 5
1 2
1 4 can you fix the verifier? ```go
package main
import (
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
readInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
n := readInt()
m := readInt()
nxt := make([]int, n+1)
prv := make([]int, n+1)
for i := 1; i <= n; i++ {
nxt[i] = readInt()
}
for i := 1; i <= n; i++ {
prv[nxt[i]] = i
}
deg := make([]int, n+1)
xorNbr := make([]int, n+1)
xorEdge := make([]int, n+1)
for id := 1; id <= m; id++ {
x := readInt()
y := readInt()
deg[x]++
deg[y]++
xorNbr[x] ^= y
xorNbr[y] ^= x
xorEdge[x] ^= id
xorEdge[y] ^= id
}
alive := make([]bool, n+1)
for i := 1; i <= n; i++ {
alive[i] = true
}
q := make([]int, 0, n+2*m)
for i := 1; i <= n; i++ {
if deg[i] == 1 && prv[i] == xorNbr[i] {
q = append(q, i)
}
}
ans := make([]int, 0, m)
for head := 0; head < len(q); head++ {
v := q[head]
if !alive[v] || deg[v] != 1 || prv[v] != xorNbr[v] {
continue
}
id := xorEdge[v]
u := xorNbr[v]
ans = append(ans, id)
alive[v] = false
a := prv[v]
b := nxt[v]
nxt[a] = b
prv[b] = a
deg[v] = 0
xorNbr[v] = 0
xorEdge[v] = 0
if alive[u] {
deg[u]--
xorNbr[u] ^= v
xorEdge[u] ^= id
if deg[u] == 1 && prv[u] == xorNbr[u] {
q = append(q, u)
}
}
if alive[b] && deg[b] == 1 && prv[b] == xorNbr[b] {
q = append(q, b)
}
}
out := make([]byte, 0, m*8)
for i, v := range ans {
if i > 0 {
out = append(out, ' ')
}
out = strconv.AppendInt(out, int64(v), 10)
}
out = append(out, '\n')
os.Stdout.Write(out)
}
```