結果
| 問題 |
No.2640 traO Stamps
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-02-12 03:27:18 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,216 bytes |
| コンパイル時間 | 234 ms |
| コンパイル使用メモリ | 13,056 KB |
| 実行使用メモリ | 26,916 KB |
| 最終ジャッジ日時 | 2024-09-28 17:49:12 |
| 合計ジャッジ時間 | 4,679 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 1 |
| other | RE * 5 TLE * 1 -- * 27 |
ソースコード
import math
N, M, K = map(int, input().split())
S = list(map(int, input().split()))
dist = [[10**18] * N for _ in range(N)]
for i in range(N):
dist[i][i] = 0
for _ in range(M):
u, v, w = map(int, input().split())
dist[u - 1][v - 1] = w
dist[v - 1][u - 1] = w
for k in range(N):
for i in range(N):
for j in range(N):
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])
P = int(math.sqrt(K))
baby = [0] * K
giant = [0] * P
for i in range(K):
baby[i] = dist[S[i] - 1][S[i + 1] - 1]
giant[i // P] += baby[i]
Q = int(input())
for _ in range(Q):
T, X, Y = map(int, input().split())
if T == 1:
Y -= 1
S[X] = Y
giant[(X - 1) // P] -= baby[X - 1]
baby[X - 1] = dist[S[X - 1] - 1][S[X] - 1]
giant[(X - 1) // P] += baby[X - 1]
giant[X // P] -= baby[X]
baby[X] = dist[S[X] - 1][S[X + 1] - 1]
giant[X // P] += baby[X]
else:
ans = 0
x = (X + P - 1) // P
y = Y // P
for i in range(x, y):
ans += giant[i]
for i in range(X, x * P):
ans += baby[i]
for i in range(y * P, Y):
ans += baby[i]
print(ans)