For problem statement at 1000-1999/1400-1499/1450-1459/1450/problemE.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1450-1459/1450/verifierE.go ends with case 2 failed: expected:
NO
----
got:
YES
1
1 0
input:
2 4
1 2 1
2 1 1
2 1 1
2 1 1
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n, m int
if _, err := fmt.Fscan(reader, &n, &m); err != nil {
return
}
adj := make([][]int, n+1)
dist := make([][]int, n+1)
for i := 1; i <= n; i++ {
dist[i] = make([]int, n+1)
for j := 1; j <= n; j++ {
if i == j {
dist[i][j] = 0
} else {
dist[i][j] = 1e9
}
}
}
for i := 0; i < m; i++ {
var u, v, b int
fmt.Fscan(reader, &u, &v, &b)
adj[u] = append(adj[u], v)
adj[v] = append(adj[v], u)
dist[u][v] = 1
if b == 1 {
dist[v][u] = -1
} else {
dist[v][u] = 1
}
}
color := make([]int, n+1)
for i := 1; i <= n; i++ {
if color[i] == 0 {
color[i] = 1
q := []int{i}
for len(q) > 0 {
curr := q[0]
q = q[1:]
for _, neighbor := range adj[curr] {
if color[neighbor] == 0 {
color[neighbor] = 3 - color[curr]
q = append(q, neighbor)
} else if color[neighbor] == color[curr] {
fmt.Println("NO")
return
}
}
}
}
}
for k := 1; k <= n; k++ {
for i := 1; i <= n; i++ {
if dist[i][k] != 1e9 {
for j := 1; j <= n; j++ {
if dist[k][j] != 1e9 {
if dist[i][k]+dist[k][j] < dist[i][j] {
dist[i][j] = dist[i][k] + dist[k][j]
}
}
}
}
}
}
for i := 1; i <= n; i++ {
if dist[i][i] < 0 {
fmt.Println("NO")
return
}
}
maxD := -1
bestU := -1
for i := 1; i <= n; i++ {
for j := 1; j <= n; j++ {
if dist[i][j] > maxD {
maxD = dist[i][j]
bestU = i
}
}
}
fmt.Println("YES")
fmt.Println(maxD)
for i := 1; i <= n; i++ {
if i > 1 {
fmt.Print(" ")
}
fmt.Print(dist[bestU][i])
}
fmt.Println()
}