Submission #866103

#TimeUsernameProblemLanguageResultExecution timeMemory
866103vjudge1봉쇄 시간 (IOI23_closing)C++17
8 / 100
101 ms38560 KiB
#include "closing.h" #include <bits/stdc++.h> using namespace std; namespace{ const int MAXN = 2e5 + 3; vector<pair<int, int>> adj[MAXN]; long long dep1[MAXN]; long long dep2[MAXN]; void dfs(int node, int par, long long 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<long long, vector<long long>, greater<long long>> 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...