Submission #1306295

#TimeUsernameProblemLanguageResultExecution timeMemory
1306295ladnooooToll (BOI17_toll)C++20
0 / 100
3094 ms3828 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back //#define int long long const int maxN = 4e5 + 7; vector<pair<int, int>> g[maxN]; int dp[maxN]; int pref[maxN]; int c[maxN]; void solve() { int k, n, m, o; cin >> k >> n >> m >> o; for(int i = 0; i < n - 1; i++) { c[i] = 1e9; } for(int i = 1; i <= m; i++) { int u, v, w; cin >> u >> v >> w; g[u].pb({v, w}); c[u] = min(c[u], w); } for(int i = 0; i < n; i++) pref[i] = 1e9; pref[0] = 0; for(int i = 1; i < n; i++) { if(c[i - 1] != 1e9 && pref[i - 1] != 1e9) { pref[i] = pref[i - 1] + c[i - 1]; } else { pref[i] = 1e9; } } while(o--) { int a, b; cin >> a >> b; if(k == 1) { if(pref[a] == 1e9 || pref[b] == 1e9) { cout << -1 << '\n'; } else { cout << pref[b] - pref[a] << '\n'; } continue; } for(int i = a; i <= b; i++) dp[i] = 1e9; queue<int> q; q.push(a); dp[a] = 0; while(!q.empty()) { int v = q.front(); q.pop(); for(auto [u, w] : g[v]) { if(dp[u] > dp[v] + w) { dp[u] = dp[v] + w; q.push(u); } } } if(dp[b] == 1e9) cout << -1 << '\n'; else cout << dp[b] << '\n'; } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("input.txt", "r", stdin); int t = 1; //cin >> t; while(t--) solve(); }
#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...