For problem statement at 0-999/900-999/920-929/928/problemC.txt this is a correct solution, but verifier at 0-999/900-999/920-929/928/verifierC.go ends with case 1 failed: expected got 0
input:
4
eca 3
0
ce 1
0
ada 5
1
eca 3
e 5
1
eca 3
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
type Project struct {
name string
version int
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
scanString := func() string {
scanner.Scan()
return scanner.Text()
}
scanInt := func() int {
scanner.Scan()
v, _ := strconv.Atoi(scanner.Text())
return v
}
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
g := make(map[string]map[int][]Project)
var polycarpName string
var polycarpVersion int
for i := 0; i < n; i++ {
name := scanString()
version := scanInt()
if i == 0 {
polycarpName = name
polycarpVersion = version
}
k := scanInt()
deps := make([]Project, k)
for j := 0; j < k; j++ {
deps[j] = Project{name: scanString(), version: scanInt()}
}
if g[name] == nil {
g[name] = make(map[int][]Project)
}
g[name][version] = deps
}
resolved := make(map[string]int)
resolved[polycarpName] = polycarpVersion
active := []Project{{polycarpName, polycarpVersion}}
for len(active) > 0 {
nextLevel := make(map[string]int)
for _, p := range active {
deps := g[p.name][p.version]
for _, dep := range deps {
if _, ok := resolved[dep.name]; !ok {
if nextLevel[dep.name] < dep.version {
nextLevel[dep.name] = dep.version
}
}
}
}
active = nil
for name, version := range nextLevel {
resolved[name] = version
active = append(active, Project{name, version})
}
}
var names []string
for name := range resolved {
if name != polycarpName {
names = append(names, name)
}
}
sort.Strings(names)
fmt.Printf("%d\n", len(names))
for _, name := range names {
fmt.Printf("%s %d\n", name, resolved[name])
}
}
```