Submission #1322631

#TimeUsernameProblemLanguageResultExecution timeMemory
1322631vaishakhvConstruction Project 2 (JOI24_ho_t2)C++20
45 / 100
2092 ms18904 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; using ll = long long; #define eb emplace_back const ll inf = 1e18; const ll cap = 2e5+1; ll n; vector<pair<ll,ll>> adj[cap]; vector<ll> dijkstra(ll u) { vector<ll> dist(n, inf); priority_queue<pair<ll, ll>> pq; dist[u] = 0; pq.push({0, u}); while (!pq.empty()) { auto [d, s] = pq.top(); d *= -1; pq.pop(); if (d > dist[s]) continue; for (auto [v, w] : adj[s]) { if (dist[s] + w < dist[v]) { dist[v] = dist[s] + w; pq.push({-dist[v], v}); } } } return dist; } int main() { ios::sync_with_stdio(0); cin.tie(0); ll m, s, t, l, k; cin >> n >> m >> s >> t >> l >> k; s--; t--; for (ll i{}; i < m; i++) { ll a, b, c; cin >> a >> b >> c; a--; b--; adj[a].eb(b, c); adj[b].eb(a, c); } vector<ll> dist_s = dijkstra(s); vector<ll> dist_t = dijkstra(t); ll ans = 0; for (ll u{}; u < n; u++) { for (ll v = u + 1; v < n; v++) { if (dist_s[t] <= k || dist_s[u] + l + dist_t[v] <= k || dist_s[v] + l + dist_t[u] <= k) { ans++; } } } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...