Submission #1321222

#TimeUsernameProblemLanguageResultExecution timeMemory
1321222aryanVoting Cities (NOI22_votingcity)C++20
0 / 100
3 ms824 KiB
#include<bits/stdc++.h>
using namespace std;

using i64 = long long;


int main(){
        
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n,e,k;
    cin >> n >> e >> k;
    vector<int> good;
    for(int i = 0;i < k;i++){
        int x;
        cin >> x;
        good.push_back(x);
    }
    vector<vector<pair<int,int>>> adj(n);
    for(int i = 0;i < e;i++){
        int u,v,w;
        cin >> u >> v >> w;
        adj[u].push_back({v,w});
        adj[v].push_back({u,w});
    }

    const i64 inf = 1e18;
    vector<i64> dist(n,inf);
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
    for(int &e : good){
        pq.push({0LL,e});
        dist[e] = 0LL;
    }
    while(!pq.empty()){
        int u = pq.top().second;
        pq.pop();
        i64 di = pq.top().first;
        if(di > dist[u]) continue;
        for(auto pp : adj[u]){
            int v = pp.first;
            int w = pp.second;
            if((i64) w + di < dist[v]){
                pq.push({w + di,v});
                dist[v] = w + di;
            }
        }
    }
    int q;
    cin >> q;
    while(q --){
        int s;
        cin >> s;
        int p;
        cin >> p >> p >> p >> p >> p;
        cout << (dist[s] == inf ? -1 : dist[s]) << '\n'; 
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...