Submission #1322636

#TimeUsernameProblemLanguageResultExecution timeMemory
1322636vaishakhvConstruction Project 2 (JOI24_ho_t2)C++20
0 / 100
2095 ms16688 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> bfs(ll u) { vector<ll> dist(n, inf); queue<ll> q; dist[u] = 0; q.push(u); while (!q.empty()) { ll s = q.front(); q.pop(); for (auto [v, w] : adj[s]) { if (dist[v] == inf) { dist[v] = dist[s] + 1; q.push(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 = bfs(s); vector<ll> dist_t = bfs(t); ll ans = 0; if (dist_s[t] <= k) { ans = n * (n - 1) / 2; } else { set<pair<ll,ll>> val; for (ll u{}; u < n; u++) { if (dist_s[u] > 1) continue; for (ll v{}; v < n; v++) { if (dist_t[v] > k - l - dist_s[u]) continue; if (u < v) val.insert({u, v}); else if (v < u) val.insert({v, u}); } } ans = val.size(); } 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...