Submission #1212025

#TimeUsernameProblemLanguageResultExecution timeMemory
1212025trimkusClosing Time (IOI23_closing)C++20
0 / 100
1097 ms215956 KiB
#include "closing.h" #include <bits/stdc++.h> using namespace std; using ll = long long; int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W) { vector<vector<pair<int, int>>> adj(N); 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]}); } vector<ll> c(N); ll sum = 0; int res = 0; priority_queue<array<ll, 3>> pq; vector<vector<bool>> vis(2, vector<bool>(N)); pq.push({0, X, 0}); pq.push({0, Y, 1}); vis[0][X] = 1; vis[1][Y] = 1; while (pq.size()) { ll T = -pq.top()[0]; int v = pq.top()[1]; int p = pq.top()[2]; pq.pop(); // cout << v << " , " << p << " = " << T << "\n"; if (sum + T - c[v] > K) continue; res += 1; sum += T - c[v]; c[v] = T; for (auto& [u, w] : adj[v]) { if (vis[p][u]) continue; pq.push({-T - w, u, p}); } } return res; }
#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...