Submission #1022948

#TimeUsernameProblemLanguageResultExecution timeMemory
1022948j_vdd16Closing Time (IOI23_closing)C++17
0 / 100
78 ms35148 KiB
#include <algorithm> #include <bitset> #include <cstdint> #include <cstring> #include <iostream> #include <limits.h> #include <math.h> #include <map> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <vector> #define int long long #define loop(X, N) for(int X = 0; X < (N); X++) #define all(V) V.begin(), V.end() #define rall(V) V.rbegin(), V.rend() using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vector<ii>> vvii; typedef vector<bool> vb; typedef vector<vector<bool>> vvb; vvii adj; struct Partition { Partition(int n) : degrees(vi(n)) {} set<int> elements; vi degrees; priority_queue<ii, vii, greater<ii>> leaves; }; void dfs(int node, int cost, vi& costs, vi& parents) { costs[node] = cost; for (auto [child, weight] : adj[node]) { if (child == parents[node]) continue; parents[child] = node; dfs(child, cost + weight, costs, parents); } } signed max_score(signed n, signed x, signed y, int _k, vector<signed> u, vector<signed> v, vector<signed> w) { adj = vvii(n); loop(i, n - 1) { adj[u[i]].push_back({ v[i], w[i] }); adj[v[i]].push_back({ u[i], w[i] }); } vi costX(n), parentX(n); vi costY(n), parentY(n); dfs(x, 0, costX, parentX); dfs(y, 0, costY, parentY); int maxScore = 0; { int k = _k; typedef tuple<int, int, int> iii; priority_queue<iii, vector<iii>, greater<iii>> toAdd; vb vis(n); toAdd.push({ 0, x, -1 }); toAdd.push({ 0, y, -1 }); while (toAdd.size()) { auto [cost, node, parent] = toAdd.top(); toAdd.pop(); if (k - cost < 0) break; vis[node] = true; k -= cost; maxScore++; for (auto [child, weight] : adj[node]) { if (child == parent || vis[child]) continue; toAdd.push({ min(costX[child], costY[child]) + cost, child, node }); } } } { int k = _k; } return maxScore; }

Compilation message (stderr)

closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:91:7: warning: unused variable 'k' [-Wunused-variable]
   91 |   int k = _k;
      |       ^
#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...