Submission #1248577

#TimeUsernameProblemLanguageResultExecution timeMemory
1248577BoomydayClosing Time (IOI23_closing)C++20
8 / 100
150 ms34504 KiB
#include "closing.h" #include <bits/stdc++.h> using namespace std; using ll = long long; vector<ll> distx, disty; vector<vector<pair<ll,int>>> adj; void get_dist(vector<ll>& dist, int u, int p = -1){ for(auto& [w, v]:adj[u]) if (v != p){ dist[v] = dist[u] + w; get_dist(dist, v, u); } } int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W) { adj.clear(); adj.resize(N); for(int i=0;i<N-1;++i){ adj[U[i]].push_back({W[i], V[i]}); adj[V[i]].push_back({W[i], U[i]}); } distx.resize(N); disty.resize(N); distx[X] = 0; disty[Y] = 0; get_dist(distx, X); get_dist(disty, Y); // solve the first subtask ll ans = 0; vector<ll> dists; for(int i=0;i<N;++i) dists.push_back(min(distx[i], disty[i])); sort(dists.begin(), dists.end()); ll kk = K; for(auto&d:dists){ if (kk < d) break; ans += 1; kk -= d; } 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...