結果
問題 | No.92 逃走経路 |
ユーザー |
![]() |
提出日時 | 2019-04-12 13:43:23 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 51 ms / 5,000 ms |
コード長 | 1,724 bytes |
コンパイル時間 | 14,117 ms |
コンパイル使用メモリ | 241,756 KB |
実行使用メモリ | 7,900 KB |
最終ジャッジ日時 | 2024-09-14 01:07:27 |
合計ジャッジ時間 | 15,463 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
package mainimport ("bufio""fmt""os""sort""strconv")func main() {sc := bufio.NewScanner(os.Stdin)sc.Split(bufio.ScanWords)sc.Scan()n, _ := strconv.Atoi(sc.Text())sc.Scan()m, _ := strconv.Atoi(sc.Text())sc.Scan()k, _ := strconv.Atoi(sc.Text())// 犯人が潜伏しうる町cities := make([]int, n)for i := range cities {cities[i] = i + 1}// fmt.Println(cities)// どこからどこにいくのにいくらかかるかtype route struct {to, cost int}routes := make(map[int][]route)for i := 0; i < m; i++ {sc.Scan()a, _ := strconv.Atoi(sc.Text())sc.Scan()b, _ := strconv.Atoi(sc.Text())sc.Scan()c, _ := strconv.Atoi(sc.Text())if _, ok := routes[a]; !ok {routes[a] = make([]route, 0)}routes[a] = append(routes[a], route{b, c})if _, ok := routes[b]; !ok {routes[b] = make([]route, 0)}routes[b] = append(routes[b], route{a, c})}// fmt.Println(routes)for i := 0; i < k; i++ {sc.Scan()c, _ := strconv.Atoi(sc.Text())exists := make(map[int]int) // キーが町for _, city := range cities {// cityから行けるところで、cの通行料金がかかるところがあるかif len(routes[city]) > 0 {for _, r := range routes[city] {if r.cost == c {exists[r.to]++}}}}// fmt.Println(i, "exists", exists)cities = make([]int, len(exists))i := 0for e := range exists {cities[i] = ei++}// fmt.Println(i, "cities", cities)}sort.Slice(cities, func(i, j int) bool {return cities[i] < cities[j]})s := ""for _, c := range cities {if s != "" {s += " "}s += strconv.Itoa(c)}fmt.Println(len(cities))fmt.Println(s)}