Submission #1316889

#TimeUsernameProblemLanguageResultExecution timeMemory
13168891otaConstruction Project 2 (JOI24_ho_t2)C++20
8 / 100
248 ms24716 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define int long long #define pii pair<int, int> #define ff first #define ss second #define entire(x) (x).begin(), (x).end() const int inf = 9e17; int32_t main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; int source, sink, l, k; cin >> source >> sink >> l >> k; vector<vector<pii>> adj(n); source--, sink--; for (int i = 0; i < m; i++){ int u, v, w; cin >> u >> v >> w; u--, v--; adj[u].push_back(pii{v, w}); adj[v].push_back(pii{u, w}); } auto dijkstra = [&](int s, vector<int>& dist){ fill(entire(dist), inf); priority_queue<pii, vector<pii>, greater<pii>> pq; pq.push(pii{0, s}); while (!pq.empty()){ auto [d, u] = pq.top(); pq.pop(); if (dist[u] != inf) continue; else dist[u] = d; for (auto [v, w] : adj[u]) pq.push(pii{d + w, v}); } }; vector<int> s(n), t(n); dijkstra(source, s); dijkstra(sink, t); if (s[sink] <= k) { cout << (n * (n-1)) / 2 << endl; return 0; } int ans = 1; for (int i = 0; i < n; i++) if (i != sink) ans += (s[i] == 1) + (t[i] == 1); // for (int u = 0; u < n; u++) for (int v = u + 1; v < n; v++){ // int d = min(s[u] + t[v], s[v] + t[u]) + l; // if (d <= k) ans++; // } cout << ans << endl; 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...