結果
| 問題 | 
                            No.2640 traO Stamps
                             | 
                    
| コンテスト | |
| ユーザー | 
                             ニックネーム
                         | 
                    
| 提出日時 | 2024-02-19 21:54:24 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                RE
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 958 bytes | 
| コンパイル時間 | 397 ms | 
| コンパイル使用メモリ | 82,344 KB | 
| 実行使用メモリ | 104,784 KB | 
| 最終ジャッジ日時 | 2024-09-29 01:52:40 | 
| 合計ジャッジ時間 | 7,702 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 1 RE * 32 | 
ソースコード
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 k in range(n):
    for i in range(n):
        for j in range(n):
            d[i][j] = min(d[i][j],d[i][k]+d[k][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:
        y -= 1
        if x>0: bit.a(x,d[s[x-1]][y]-d[s[x-1]][s[x]])
        if x<k: bit.a(x+1,d[y][s[x+1]]-d[s[x]][s[x+1]])
        s[x] = y
    else: print(bit.r(x+1,y))
            
            
            
        
            
ニックネーム