Submission #1257976

#TimeUsernameProblemLanguageResultExecution timeMemory
1257976LucaLucaMMeetings 2 (JOI21_meetings2)C++20
4 / 100
4094 ms580 KiB
#include <iostream> #include <vector> #include <algorithm> #include <cassert> using ll = long long; #define debug(x) #x << " = " << x << '\n' int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); int n; std::cin >> n; std::vector<std::vector<int>> g(n); for (int i = 1; i < n; i++) { int u, v; std::cin >> u >> v; u--, v--; g[u].push_back(v); g[v].push_back(u); } std::vector<int> answer(n + 1, 0); std::vector<int> score(n, 0); auto dfs = [&](auto &&self, int u, int p, int d) -> void { score[u] += d; for (int v : g[u]) { if (v != p) { self(self, v, u, d + 1); } } }; for (int mask = 1; mask < (1 << n); mask++) { for (int i = 0; i < n; i++) { if (mask >> i & 1) { dfs(dfs, i, -1, 0); } } int best = n * n, cnt = 0; for (int i = 0; i < n; i++) { if (score[i] < best) { best = score[i]; cnt = 1; } else if (score[i] == best) { cnt++; } score[i] = 0; } answer[__builtin_popcount(mask) - 1] = std::max(answer[__builtin_popcount(mask) - 1], cnt); } for (int i = 0; i < n; i++) { std::cout << answer[i] << ' '; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...