For problem statement at 1000-1999/1600-1699/1670-1679/1674/problemG.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1670-1679/1674/verifierG.go ends with wrong answer on test 1
input:
4 6
3 2
4 1
1 4
1 3
3 4
4 2
expected: 1
got: 3
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
line := strings.TrimSpace(scanner.Text())
parts := strings.Split(line, " ")
n, _ := strconv.Atoi(parts[0])
m, _ := strconv.Atoi(parts[1])
outDeg := make([]int, n+1)
inDeg := make([]int, n+1)
edges := make([][2]int, 0, m)
for i := 0; i < m; i++ {
scanner.Scan()
line = strings.TrimSpace(scanner.Text())
parts = strings.Split(line, " ")
u, _ := strconv.Atoi(parts[0])
v, _ := strconv.Atoi(parts[1])
outDeg[u]++
inDeg[v]++
edges = append(edges, [2]int{u, v})
}
adj := make([][]int, n+1)
newIn := make([]int, n+1)
for _, e := range edges {
u, v := e[0], e[1]
if outDeg[u] >= 2 && inDeg[v] >= 2 {
adj[u] = append(adj[u], v)
newIn[v]++
}
}
q := make([]int, 0, n)
for i := 1; i <= n; i++ {
if newIn[i] == 0 {
q = append(q, i)
}
}
dp := make([]int, n+1)
for i := 1; i <= n; i++ {
dp[i] = 1
}
ans := 1
for len(q) > 0 {
u := q[0]
q = q[1:]
if dp[u] > ans {
ans = dp[u]
}
for _, v := range adj[u] {
if dp[u]+1 > dp[v] {
dp[v] = dp[u] + 1
}
newIn[v]--
if newIn[v] == 0 {
q = append(q, v)
}
}
}
fmt.Println(ans)
}
```