Submission #1217935

#TimeUsernameProblemLanguageResultExecution timeMemory
1217935qwushaClosing Time (IOI23_closing)C++17
8 / 100
110 ms21896 KiB
#include <bits/stdc++.h> #include "closing.h" using namespace std; #define fi first #define se second typedef long long ll; typedef long double ld; mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count()); ll inf = 1e18; ll n, x, y, k; vector<vector<pair<ll,ll>>> g; vector<ll> dist; int max_score(int N, int X, int Y, ll K, vector<int> U, vector<int> V, vector<int> W) { n = N; x = X; y = Y; k = K; g.assign(N, {}); for (int i = 0; i < U.size(); i++) { g[V[i]].push_back({U[i], W[i]}); g[U[i]].push_back({V[i], W[i]}); } dist.assign(n, inf); set<pair<ll, ll>> st; dist[x] = 0; dist[y] = 0; st.insert({0,x}); st.insert({0,y}); while (!st.empty()) { auto [d, ve] = *st.begin(); st.erase({d, ve}); for (auto [uv, le] : g[ve]) { if (dist[uv] > d + le) { st.erase({dist[uv], uv}); dist[uv] = d + le; st.insert({dist[uv], uv}); } } } sort(dist.begin(), dist.end()); int cnt = 0; for (int i = 0; i < n; i++) { if (dist[i] <= k) { cnt++; k -= dist[i]; } } return cnt; }
#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...