Submission #1172739

#TimeUsernameProblemLanguageResultExecution timeMemory
1172739TsaganaConstruction Project 2 (JOI24_ho_t2)C++20
100 / 100
198 ms24904 KiB
#include<bits/stdc++.h> #define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie(); #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define int long long #define pq priority_queue #define eb emplace_back #define lb lower_bound #define ub upper_bound #define pb push_back #define pp pop_back #define F first #define S second using namespace std; vector<pair<int, int>> adj[200010]; vector<int> vis[2]; void bfs(int s, int t) { vis[t][s]=0; pq<pair<int, int>> q; q.push({0, s}); while (!q.empty()) { int w = -q.top().F; s = q.top().S; q.pop(); if (vis[t][s] < w) continue ; for (auto i: adj[s]) { if (w + i.S < vis[t][i.F]) { vis[t][i.F] = w + i.S; q.push({-vis[t][i.F], i.F}); } } } } void solve () { int n, m, s, t, l, k; cin >> n >> m >> s >> t >> l >> k; for (int i = 0; i < m; i++) { int a, b, c; cin >> a >> b >> c; adj[a].pb({b, c}); adj[b].pb({a, c}); } vis[0] = vis[1] = vector<int>(n+1, 2e18); bfs(s, 0); bfs(t, 1); if (vis[0][t] <= k) { cout << (n * (n - 1)) / 2 << '\n'; return ; } int ans = 0; sort(all(vis[0])); sort(rall(vis[1])); for (int i = 0, r = 1; i < n; i++) { while (r <= n && vis[0][i] + vis[1][r] + l > k) r++; ans += n - r + 1; } cout << ans << '\n'; } signed main() {IOS solve(); return 0;}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...