結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
wreulicke
|
| 提出日時 | 2016-03-13 17:09:35 |
| 言語 | Go (1.23.4) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,460 bytes |
| コンパイル時間 | 11,835 ms |
| コンパイル使用メモリ | 224,156 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-08 04:24:16 |
| 合計ジャッジ時間 | 13,234 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 RE * 3 |
| other | AC * 3 WA * 24 RE * 13 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
var sc = bufio.NewScanner(os.Stdin)
func nextInt() int {
sc.Scan()
i, _ := strconv.Atoi(sc.Text())
return i
}
func get(n int) []int {
inputs :=
make([]int, n)
for index := range inputs {
inputs[index] = nextInt()
}
return inputs
}
//
// func getInput() (int, int) {
// var a, b int
// fmt.Scan(&a)
// fmt.Scan(&b)
// return a, b
// }
type Road struct {
cost int
timecost int
}
func getAnswer() int8 {
return -1
}
func getRoads(n int, s []int, t []int, y []int, m []int) [][]Road {
r := make([][]Road, n)
for i := 0; i < n; i++ {
r[i] = make([]Road, n)
}
for i := range s {
r[s[i]-1][t[i]-1] = Road{y[i], m[i]}
}
return r
}
func main() {
sc.Split(bufio.ScanWords)
n, c, v := nextInt(), nextInt(), nextInt()
s, t, y, m := get(v), get(v), get(v), get(v)
roads := getRoads(n, s, t, y, m)
var position, total, time int
for i := 0; i < n; i++ {
var r *Road
// fmt.Println("pos", position)
for to, road := range roads[position] {
// fmt.Println("to", to, "road", road)
if road.cost == 0 {
continue
}
if (r == nil || r.cost > road.cost) && total+road.cost <= c {
// fmt.Println("found")
r = &road
position = to
}
}
total += r.cost
time += r.timecost
if position == n-1 {
break
}
}
// fmt.Println(total)
// fmt.Println(time)
if c >= total && position == n-1 {
fmt.Println(time)
} else {
fmt.Println(-1)
}
}
wreulicke