Submission #1215568

#TimeUsernameProblemLanguageResultExecution timeMemory
1215568qwushaClosing Time (IOI23_closing)C++20
0 / 100
114 ms32580 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 = 1e15; vector<vector<pair<ll, ll>>> g; vector<ll> dist; vector<int> v, u, w; void dfs(ll x, ll d=0) { dist[x] = d; for (auto [y, ti] : g[x]) { if (dist[y] == -1) { dfs(y, d + ti); } } } int max_score(int n, int x, int y, ll k, vector<int> U, vector<int> V, vector<int> W) { g.resize(n); v = V; u = U; w = W; for (int i = 0; i < n - 1; i++) { g[u[i]].push_back({v[i], w[i]}); g[v[i]].push_back({u[i], w[i]}); } dist.assign(n, -1); dfs(x); vector<ll> vec(n); for (ll i = 0; i < n; i++) { vec[i] = dist[i]; } dist.assign(n, -1); dfs(y); for (ll i = 0; i < n; i++) { vec[i] = min(vec[i], dist[i]); } sort(vec.begin(), vec.end()); int cnt = 0; for (ll i = 0; i < n; i++) { if (k >= vec[i]) { k -= vec[i]; cnt++; } else { break; } } 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...