Submission #1280904

#TimeUsernameProblemLanguageResultExecution timeMemory
1280904avighnaClosing Time (IOI23_closing)C++20
9 / 100
1094 ms26444 KiB
#include <bits/stdc++.h> using int64 = long long; int max_score(int n, int a, int b, long long k, std::vector<int> u, std::vector<int> v, std::vector<int> w) { std::vector<std::vector<std::pair<int, int64>>> adj(n); for (int i = 0; i < n - 1; ++i) { adj[u[i]].push_back({v[i], w[i]}); adj[v[i]].push_back({u[i], w[i]}); } int64 inf = 1e15; auto dijkstra = [&](int u) { std::vector<int64> dist(n, inf); std::priority_queue<std::pair<int, int>> pq; dist[u] = 0; pq.push({-dist[u], u}); std::vector<bool> vis(n); vis[u] = true; while (!pq.empty()) { auto [d, u] = pq.top(); pq.pop(); d = -d; for (auto &[i, w] : adj[u]) { if (vis[i] or dist[i] <= d + w) { continue; } dist[i] = d + w; vis[i] = true; pq.push({-dist[i], i}); } } return dist; }; auto da = dijkstra(a), db = dijkstra(b); std::vector<int> na(n), nb(n); std::iota(na.begin(), na.end(), 0); std::iota(nb.begin(), nb.end(), 0); std::sort(na.begin(), na.end(), [&](int i, int j) { return da[i] < da[j]; }); std::sort(nb.begin(), nb.end(), [&](int i, int j) { return db[i] < db[j]; }); int ans = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { int64 used = 0; std::vector<int64> c(n); for (int _ = 0; _ < i; ++_) { used += std::max(0LL, da[na[_]] - c[na[_]]); c[na[_]] = std::max(c[na[_]], da[na[_]]); } for (int _ = 0; _ < j; ++_) { used += std::max(0LL, db[nb[_]] - c[nb[_]]); c[nb[_]] = std::max(c[nb[_]], db[nb[_]]); } if (used <= k) { ans = std::max(ans, i + j); } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...