結果
| 問題 | No.2640 traO Stamps |
| コンテスト | |
| ユーザー |
ニックネーム
|
| 提出日時 | 2024-02-19 22:03:48 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 485 ms / 2,000 ms |
| コード長 | 952 bytes |
| 記録 | |
| コンパイル時間 | 246 ms |
| コンパイル使用メモリ | 82,828 KB |
| 実行使用メモリ | 105,268 KB |
| 最終ジャッジ日時 | 2024-09-29 02:01:08 |
| 合計ジャッジ時間 | 15,065 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 33 |
ソースコード
class BIT:
def __init__(self,n):
self.n = n; self.k = [0]*(n+1)
def a(self,i,x):
while i<=self.n: self.k[i] += x; i += i&-i
def s(self,i):
t = 0
while i>0: t += self.k[i]; i -= i&-i
return t
def r(self,l,r): return self.s(r)-self.s(l-1)
n,m,k = map(int,input().split())
s = [v-1 for v in map(int,input().split())]
d = [[10**18]*n for _ in range(n)]
for i in range(n): d[i][i] = 0
for _ in range(m):
a,b,c = map(int,input().split())
d[a-1][b-1] = d[b-1][a-1] = c
for l in range(n):
for i in range(n):
for j in range(n):
d[i][j] = min(d[i][j],d[i][l]+d[l][j])
bit = BIT(k)
for i in range(1,k+1): bit.a(i,d[s[i-1]][s[i]])
for _ in range(int(input())):
t,x,y = map(int,input().split())
if t==1:
if x>0: bit.a(x,d[s[x-1]][y-1]-d[s[x-1]][s[x]])
if x<k: bit.a(x+1,d[y-1][s[x+1]]-d[s[x]][s[x+1]])
s[x] = y-1
if t==2: print(bit.r(x+1,y))
ニックネーム