← Home
For problem statement at 1000-1999/1400-1499/1490-1499/1494/problemE.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1490-1499/1494/verifierE.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"os"
)

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<16)
	out := bufio.NewWriterSize(os.Stdout, 1<<16)
	defer out.Flush()

	readByte := func() byte {
		for {
			b, err := in.ReadByte()
			if err != nil {
				return 0
			}
			if b > 32 {
				return b
			}
		}
	}

	readInt := func() uint64 {
		var res uint64
		var b byte
		for {
			b, _ = in.ReadByte()
			if b > 32 {
				break
			}
		}
		for {
			res = res*10 + uint64(b-'0')
			b, _ = in.ReadByte()
			if b <= 32 {
				break
			}
		}
		return res
	}

	readInt()
	m := readInt()

	edges := make(map[uint64]byte)
	var mutual int
	var same int

	for i := uint64(0); i < m; i++ {
		op := readByte()
		if op == '+' {
			u := readInt()
			v := readInt()
			c := readByte()

			key := (u << 32) | v
			edges[key] = c

			revKey := (v << 32) | u
			if revC, exists := edges[revKey]; exists {
				mutual++
				if revC == c {
					same++
				}
			}
		} else if op == '-' {
			u := readInt()
			v := readInt()

			key := (u << 32) | v
			c := edges[key]

			revKey := (v << 32) | u
			if revC, exists := edges[revKey]; exists {
				mutual--
				if revC == c {
					same--
				}
			}
			delete(edges, key)
		} else if op == '?' {
			k := readInt()
			if k%2 == 1 {
				if mutual > 0 {
					out.WriteString("YES\n")
				} else {
					out.WriteString("NO\n")
				}
			} else {
				if same > 0 {
					out.WriteString("YES\n")
				} else {
					out.WriteString("NO\n")
				}
			}
		}
	}
}