結果
問題 |
No.2640 traO Stamps
|
ユーザー |
|
提出日時 | 2024-02-20 01:13:52 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 172 ms / 2,000 ms |
コード長 | 1,268 bytes |
コンパイル時間 | 22,752 ms |
コンパイル使用メモリ | 358,628 KB |
最終ジャッジ日時 | 2025-02-19 17:52:19 |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 33 |
ソースコード
#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include<bits/stdc++.h> #include<atcoder/all> using namespace std; using namespace atcoder; using ll=long long; void IO(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); } int main(){ IO(); ll n,m,k; cin>>n>>m>>k; vector<ll> s(k+1); for(ll i=0;i<=k;i++){ cin>>s[i]; s[i]--; } vector<vector<ll>> dist(n,vector<ll>(n,1e18)); for(ll i=0;i<n;i++){ dist[i][i]=0; } for(ll i=0;i<m;i++){ ll a,b,c; cin>>a>>b>>c; a--; b--; dist[a][b]=c; dist[b][a]=c; } for(ll l=0;l<n;l++){ for(ll i=0;i<n;i++){ for(ll j=0;j<n;j++){ dist[i][j]=min(dist[i][j],dist[i][l]+dist[l][j]); } } } fenwick_tree<ll> bit(k); for(ll i=0;i<k;i++){ bit.add(i,dist[s[i]][s[i+1]]); } ll q; cin>>q; while(q--){ ll t,x,y; cin>>t>>x>>y; if(t==1){ y--; if(x-1>=0){ bit.add(x-1,-dist[s[x-1]][s[x]]); } if(x+1<=k){ bit.add(x,-dist[s[x]][s[x+1]]); } s[x]=y; if(x-1>=0){ bit.add(x-1,dist[s[x-1]][s[x]]); } if(x+1<=k){ bit.add(x,dist[s[x]][s[x+1]]); } }else{ cout<<bit.sum(x,y)<<endl; } } }