Submission #1274902

#TimeUsernameProblemLanguageResultExecution timeMemory
1274902AbdullahIshfaqConstruction Project 2 (JOI24_ho_t2)C++20
100 / 100
141 ms25328 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define MOD 998244353 void solve() { ll n, m, s, t, l, k, u, v, c, ans = 0; cin >> n >> m; cin >> s >> t >> l >> k; vector<pair<int, int>> g[n + 1]; ll dists[n + 1], distt[n + 1]; for (int i = 0; i <= n; i++) { dists[i] = distt[i] = 1e18; } for (int i = 0; i < m; i++) { cin >> u >> v >> c; g[u].push_back({v, c}); g[v].push_back({u, c}); } priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> pq, pq2; dists[s] = 0; pq.push({0, s}); while (!pq.empty()) { auto [w, u] = pq.top(); pq.pop(); if (w > dists[u]) { continue; } for (auto [i, j] : g[u]) { if (dists[u] + j < dists[i]) { dists[i] = dists[u] + j; pq.push({dists[i], i}); } } } distt[t] = 0; pq2.push({0, t}); while (!pq2.empty()) { auto [w, u] = pq2.top(); pq2.pop(); if (w > distt[u]) { continue; } for (auto [i, j] : g[u]) { if (distt[u] + j < distt[i]) { distt[i] = distt[u] + j; pq2.push({distt[i], i}); } } } for (int i = 1; i <= n; i++) { if (dists[i] + distt[i] <= k) { cout << (n * (n - 1)) / 2 << '\n'; return; } } sort(distt, distt + n + 1); k -= l; for (int i = 1; i <= n; i++) { ans += upper_bound(distt, distt + n + 1, k - dists[i]) - distt; } cout << ans << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tests = 1; // cin >> tests; for (int i = 1; i <= tests; i++) 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...