#include <bits/stdc++.h>
using namespace std;
const int INF=1e9+10;
int main() {
int n, m, s, u, t;
cin>>n>>m;
int dist[n+1];
vector<vector<pair<int, int>>> v(n+1);
for(int i=0; i<m; i++){
cin>>s>>u>>t;
v[u].push_back({s, t});
v[s].push_back({u, t});
}
for(int i=1; i<=n; i++){
sort(v[i].begin(), v[i].end());
dist[i]=INF;
}
int k, a;
cin>>k;
queue<int> q;
for(int i=0; i<k; i++){
cin>>a;
dist[a]=0;
q.push(a);
while(!q.empty()){
int u=q.front();
for(auto& [s, t] : v[u]){
if(dist[s]>dist[u]+t){
dist[s]=dist[u]+t;
q.push(s);
}
}
q.pop();
}
}
int query;
cin>>query;
for(int i=0; i<query; i++){
cin>>u>>s;
cout<<min(dist[u], dist[s])<<'\n';
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |