結果
| 問題 | No.3616 WK vs AT vs MT vs SP |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2026-08-06 15:39:12 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 791 ms / 2,000 ms |
| + 122µs | |
| コード長 | 1,169 bytes |
| 記録 | |
| コンパイル時間 | 233 ms |
| コンパイル使用メモリ | 96,108 KB |
| 実行使用メモリ | 123,516 KB |
| 最終ジャッジ日時 | 2026-08-06 15:39:28 |
| 合計ジャッジ時間 | 15,770 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| サンプル | 0 % | AC * 1 |
| 小課題1 | 8 % | AC * 9 |
| 小課題2 | 16 % | AC * 5 |
| 小課題3 | 20 % | AC * 10 |
| 小課題4 | 20 % | AC * 15 |
| 小課題5 | 20 % | AC * 15 |
| 小課題6 | 16 % | AC * 36 |
| 合計 | 2.5 * 100% = 250 点 |
ソースコード
from heapq import *
def main():
n, m, fee = list(map(int, input().split()))
X = list(map(int, input().split()))
Y = list(map(int, input().split()))
Z = list(map(int, input().split()))
A = list(map(int, input().split()))
node = [[] for _ in range(n)]
for _ in range(m):
u, v, x, y, z = list(map(int, input().split()))
node[u-1].append((v-1, x, y, z))
node[v-1].append((u-1, x, y, z))
hq = []
heappush(hq, (0, 0))
inf = 1<<60
D = [inf] *((n+1)*8)
N = n*8
ddd = inf
def add(u, c):
if D[u] > c:
D[u] = c
heappush(hq, (c, u))
while hq:
c, u = heappop(hq)
if D[u] < c: continue
u, f = u//8, u%8
if u == n:
for v in range(n):
add(v*8|f, c+A[v])
else:
add(u*8|f|1, c+X[u])
add(u*8|f|3, c+Y[u])
add(u*8|f|4, c+Z[u])
if f&4: add(N|f, c+A[u]+fee)
for v, x, y, z in node[u]:
add(v*8|f, c+x)
if f & 1: add(v*8|f, c+y)
if f & 2: add(v*8|f, c+z)
return min(D[(n-1)*8: n*8])
print(main())
kidodesu