Submission #866097

#TimeUsernameProblemLanguageResultExecution timeMemory
866097vjudge1Closing Time (IOI23_closing)C++17
0 / 100
134 ms25288 KiB
#include "closing.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 2e5 + 3; vector<pair<int, int>> adj[MAXN]; int dep1[MAXN]; int dep2[MAXN]; void dfs(int node, int par, int dep[]){ for (auto [to, w] : adj[node]){ if (to == par) continue; dep[to] = dep[node] + w; dfs(to, node, dep); } } int max_score(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W) { 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]}); } dfs(X, -1, dep1); dfs(Y, -1, dep2); priority_queue<int, vector<int>, greater<int>> pq; for (int i = 0; i < N; i++){ pq.push(dep1[i]); pq.push(dep2[i]); } int ans = 0; while (!pq.empty() && pq.top() <= K){ K -= pq.top(); pq.pop(); ans++; } for (int i = 0; i < N; i++){ adj[i].clear(); dep1[i] = dep2[i] = 0; } 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...