Submission #1137019

#TimeUsernameProblemLanguageResultExecution timeMemory
1137019nuutsnoyntonConstruction Project 2 (JOI24_ho_t2)C++20
100 / 100
223 ms22188 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using pll = pair < ll, ll > ; const ll N = 2e5 + 2; ll d_1[N], d_2[N]; vector < pll > adj[N]; int main() { ll r, x, y, i, s,can, X, Y, lo, hi, mid, n, j, ans, t, e, k, m, st, fn, cost, c; cin >> n >> m; cin >> st >> fn >> cost >> k; for (i = 1; i <= m; i++) { cin >> x >> y >> c; adj[x].push_back({y, c}); adj[y].push_back({x, c}); } priority_queue < pll , vector < pll > , greater < pll > > pq; for (i = 1; i <= n; i ++) d_1[i] = 1e18; d_1[st] = 0; pq.push({0, st}); while ( !pq.empty()) { x = pq.top().second; s = pq.top().first; pq.pop(); if ( d_1[x] != s) continue; for ( pll P : adj[x]) { y = P.first; c = P.second; if( d_1[y] > d_1[x] + c) { d_1[y] = d_1[x] + c; pq.push({d_1[y], y}); } } } for (i = 1; i <= n; i ++) d_2[i] = 1e18; d_2[fn] = 0; pq.push({0, fn}); while ( !pq.empty()) { x = pq.top().second; s = pq.top().first; pq.pop(); if ( d_2[x] != s) continue; for ( pll P : adj[x]) { y = P.first; c = P.second; if( d_2[y] > d_2[x] + c) { d_2[y] = d_2[x] + c; pq.push({d_2[y], y}); } } } if ( d_1[fn] <= k) { r = n * (n - 1)/2; cout << r << endl; return 0; } sort ( d_1 + 1, d_1 + n + 1); ans = 0; for (i = 1; i <= n; i ++) { s = k - d_2[i] - cost; r = upper_bound(d_1 + 1, d_1 + n + 1, s) - d_1; ans += r; ans --; } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...