#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair <int, int>
#define fi first
#define se second
#define mp make_pair
const int NM = 5000, inf = 1e18;
int N, E, K, Q, T[NM+5];
vector <pii> adj[NM+5];
int d[NM+5][1<<5];
priority_queue <pair <int, pii>, vector <pair <int, pii> >, greater <pair <int, pii> > > pq;
void dijkstra(){
for (int i = 0; i < N; i++)
for (int j = 0; j < (1<<5); j++)
d[i][j] = +inf;
for (int i = 0; i < K; i++){
d[T[i]][0] = 0;
pq.push(mp(0, mp(T[i], 0)));
}
while (!pq.empty()){
int u = pq.top().se.fi, msk = pq.top().se.se;
if (d[u][msk] != pq.top().fi){
pq.pop();
continue;
}
pq.pop();
for (pii _ : adj[u]){
int v = _.fi, c = _.se;
if (d[u][msk]+c < d[v][msk]){
d[v][msk] = d[u][msk]+c;
pq.push(mp(d[v][msk], mp(v, msk)));
}
for (int i = 0; i < 5; i++){
if ((msk>>i)&1) continue;
int nxt_msk = msk+(1<<i), nc = c*(10-i-1)/10;
if (d[u][msk]+nc < d[v][nxt_msk]){
d[v][nxt_msk] = d[u][msk]+nc;
pq.push(mp(d[v][nxt_msk], mp(v, nxt_msk)));
}
}
}
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N >> E >> K;
for (int i = 0; i < K; i++) cin >> T[i];
for (int i = 0; i < E; i++){
int u, v, c; cin >> u >> v >> c;
adj[v].push_back(mp(u, c));
}
dijkstra();
cin >> Q;
while (Q--){
int S, P[5];
cin >> S;
for (int i = 0; i < 5; i++) cin >> P[i];
int ans = +inf;
for (int msk = 0; msk < (1<<5); msk++){
bool chk = 1;
int res = d[S][msk];
for (int i = 0; i < 5; i++){
if (((msk>>i)&1) == 0) continue;
if (P[i] == -1){
chk = 0;
break;
}
res += P[i];
}
if (chk) ans = min(ans, res);
}
if (ans == +inf) cout << "-1\n"; else cout << ans << '\n';
}
return 0;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |