For problem statement at 2000-2999/2000-2099/2020-2029/2025/problemF.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2020-2029/2025/verifierF.go ends with failed to parse reference output: expected 1732 operations, got 3
output:
y+
y+
y-
exit status 1 can you fix the verifier? package main
import (
"bufio"
"os"
)
type Edge struct {
to int
id int
}
func readInt(r *bufio.Reader) int {
var n int
var c byte
for {
c, _ = r.ReadByte()
if c >= '0' && c <= '9' {
break
}
}
for {
n = n*10 + int(c-'0')
c, _ = r.ReadByte()
if c < '0' || c > '9' {
break
}
}
return n
}
func main() {
reader := bufio.NewReaderSize(os.Stdin, 64*1024)
writer := bufio.NewWriterSize(os.Stdout, 64*1024)
defer writer.Flush()
n := readInt(reader)
q := readInt(reader)
x := make([]int, q+1)
y := make([]int, q+1)
adj := make([][]Edge, n+1)
for i := 1; i <= q; i++ {
x[i] = readInt(reader)
y[i] = readInt(reader)
adj[x[i]] = append(adj[x[i]], Edge{y[i], i})
adj[y[i]] = append(adj[y[i]], Edge{x[i], i})
}
visNode := make([]bool, n+1)
visEdge := make([]bool, q+1)
indeg := make([]int, n+1)
assign := make([]int, q+1)
var dfs func(u, p, edgeFromParent int)
dfs = func(u, p, edgeFromParent int) {
visNode[u] = true
for _, edge := range adj[u] {
if edge.id == edgeFromParent {
continue
}
if visEdge[edge.id] {
continue
}
visEdge[edge.id] = true
v := edge.to
if visNode[v] {
assign[edge.id] = v
indeg[v]++
} else {
dfs(v, u, edge.id)
}
}
if p != 0 {
if indeg[u]%2 != 0 {
assign[edgeFromParent] = u
indeg[u]++
} else {
assign[edgeFromParent] = p
indeg[p]++
}
}
}
for i := 1; i <= n; i++ {
if !visNode[i] {
dfs(i, 0, 0)
}
}
ansChar1 := make([]byte, q+1)
ansChar2 := make([]byte, q+1)
assignedEdges := make([][]int, n+1)
for i := 1; i <= q; i++ {
v := assign[i]
assignedEdges[v] = append(assignedEdges[v], i)
}
for v := 1; v <= n; v++ {
for i, edgeIdx := range assignedEdges[v] {
if i%2 == 0 {
ansChar2[edgeIdx] = '+'
} else {
ansChar2[edgeIdx] = '-'
}
if x[edgeIdx] == v {
ansChar1[edgeIdx] = 'x'
} else {
ansChar1[edgeIdx] = 'y'
}
}
}
for i := 1; i <= q; i++ {
writer.WriteByte(ansChar1[i])
writer.WriteByte(ansChar2[i])
writer.WriteByte('\n')
}
}