結果
| 問題 | No.788 トラックの移動 |
| コンテスト | |
| ユーザー |
maspy
|
| 提出日時 | 2020-03-17 04:20:29 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 823 bytes |
| 記録 | |
| コンパイル時間 | 325 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 233,100 KB |
| 最終ジャッジ日時 | 2024-11-29 04:13:55 |
| 合計ジャッジ時間 | 30,651 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 3 WA * 5 TLE * 6 |
ソースコード
#!/usr/bin/env python3.8
# %%
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
import numpy as np
from scipy.sparse.csgraph import floyd_warshall
# %%
N, M, L = map(int, readline().split())
T = np.array(readline().split(), np.int64)
ABC = np.array(read().split(), np.int32)
A = ABC[::3]
B = ABC[1::3]
C = ABC[2::3]
# %%
dist = np.full((N, N), 10 ** 9, np.int64)
np.fill_diagonal(dist, 0)
dist[A - 1, B - 1] = C
dist[B - 1, A - 1] = C
dist = floyd_warshall(dist)
# %%
dist = (dist + .5).astype(np.int64)
cost = (dist * T[None, :]).sum(axis=1) * 2
if T[L - 1]:
cost = cost - dist[L - 1, :]
print(cost.min())
else:
diff = dist[L - 1][None, :] - dist
diff[:, T == 0] = dist[L - 1][:, None]
cost += diff.min(axis=1)
print(cost.min())
maspy