結果

問題 No.3756 Udon Network
ユーザー tsunamayo123
提出日時 2026-09-10 22:57:04
言語 C++23
(gcc 15.3.0 + boost 1.92.0 + ACL)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,201 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,587 ms
コンパイル使用メモリ 347,900 KB
実行使用メモリ 19,744 KB
最終ジャッジ日時 2026-10-09 17:31:26
合計ジャッジ時間 22,906 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge4_0
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
Example 0 % AC * 2 WA * 6
Subtask $1$ 2 % AC * 3 WA * 12
Subtask $2$ 4 % AC * 3 WA * 19
Subtask $3$ 8 % AC * 9
Subtask $4$ 16 % AC * 4 WA * 6
Subtask $5$ 32 % AC * 2 WA * 8
Subtask $6$ 38 % AC * 11 WA * 42
合計 4 * 8% = 32 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

// 部分点3
// Dijkstra

#include<bits/stdc++.h>
using namespace std;

int main(){
    int N,M,Q;
    cin>>N>>M>>Q;

    vector<int> A(N);
    for(int i=0; i<N; i++){
        cin>>A[i];
        A[i]--;
    }

    vector<vector<pair<int,int>>> G(N);
    for(int j=0; j<M; j++){
        int u,v,w;
        cin>>u>>v>>w;
        u--,v--;

        G[u].push_back({v,w});
        G[v].push_back({u,w});
    }

    vector<int> S(Q),C(Q);
    for(int k=0; k<Q; k++){
        cin>>S[k]>>C[k];
        S[k]--;
    }

    vector<int> d(N,1e9+1);
    d[S[0]]=0;
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> que;
    que.push({d[S[0]],S[0]});

    while(!que.empty()){
        auto [s,v] = que.top();
        que.pop();

        if(s>d[v])continue;

        for(auto [nex,w]:G[v]){
            if(max(s,w)<d[nex]){
                d[nex]=max(s,w);
                que.push({d[nex],nex});
            }
        }
    }
    
    vector<int> ans(N,1e9+1);
    for(int i=0;i<N;i++){
        ans[A[i]]=min(ans[A[i]],d[i]);
    }

    sort(ans.begin(),ans.end());

    for(int k=0;k<Q;k++){
        if(ans[C[k]-1]==1e9+1)cout<<-1<<endl;
        else cout<<ans[C[k]-1]<<endl;
    }
}
0