← Home
For problem statement at 2000-2999/2100-2199/2110-2119/2112/problemF.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2110-2119/2112/verifierF.go ends with All 7 tests passed. can you fix the verifier? package main

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

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

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

	const INF = int64(1e18)
	adj := make([][]int64, n+1)
	dist := make([][]int64, n+1)
	for i := 1; i <= n; i++ {
		adj[i] = make([]int64, n+1)
		dist[i] = make([]int64, n+1)
		for j := 1; j <= n; j++ {
			adj[i][j] = INF
			dist[i][j] = INF
		}
		adj[i][i] = 0
		dist[i][i] = 0
	}

	for i := 0; i < m; i++ {
		var x, y int
		var z int64
		fmt.Fscan(in, &x, &y, &z)
		if z < adj[y][x] {
			adj[y][x] = z
			dist[y][x] = z
		}
	}

	for k := 1; k <= n; k++ {
		for i := 1; i <= n; i++ {
			for j := 1; j <= n; j++ {
				if dist[i][k] != INF && dist[k][j] != INF {
					if dist[i][k]+dist[k][j] < dist[i][j] {
						dist[i][j] = dist[i][k] + dist[k][j]
					}
				}
			}
		}
	}

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

	for qi := 0; qi < q; qi++ {
		var k int64
		fmt.Fscan(in, &k)
		a := make([]int64, n+1)
		for i := 1; i <= n; i++ {
			fmt.Fscan(in, &a[i])
		}

		ans := make([]byte, n)
		for x := 1; x <= n; x++ {
			unstable := false
			for y := 1; y <= n; y++ {
				if y == x {
					continue
				}
				if dist[y][x] < adj[y][x] {
					valid := true
					for v := 1; v <= n; v++ {
						if v == y {
							continue
						}
						if adj[v][x] != INF {
							if a[y]-k+dist[y][x] >= a[v]+adj[v][x] {
								valid = false
								break
							}
						}
					}
					if valid {
						unstable = true
						break
					}
				}
			}
			if unstable {
				ans[x-1] = '1'
			} else {
				ans[x-1] = '0'
			}
		}
		fmt.Fprintln(out, string(ans))
	}
}