Submission #573807

#TimeUsernameProblemLanguageResultExecution timeMemory
573807tengiz05Village (BOI20_village)C++17
0 / 100
1 ms340 KiB
#include <bits/stdc++.h> using i64 = long long; int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; std::cin >> n; std::vector<std::vector<int>> adj(n); for (int i = 0; i < n - 1; i++) { int u, v; std::cin >> u >> v; u--; v--; adj[u].push_back(v); adj[v].push_back(u); } int mn = 0; std::vector<int> w(n, -1); std::function<void(int, int)> dfs = [&](int u, int p) { std::vector<int> a; int x = -1; for (int v : adj[u]) { if (v == p) continue; dfs(v, u); if (w[v] == -1) { a.push_back(v); } x = v; } int m = a.size(); if (m % 2 == 1) { for (int i = 0; i < m - 2; i += 2) { mn += 4; w[a[i]] = a[i + 1]; w[a[i + 1]] = a[i]; } mn += 2; w[u] = a[m - 1]; w[a[m - 1]] = u; } else { for (int i = 0; i < m; i++) { mn += 4; w[a[i]] = a[i + 1]; w[a[i + 1]] = a[i]; } if (p == -1) { mn += 2; w[u] = w[x]; w[x] = u; } } }; dfs(0, -1); std::cout << mn << " " << 0 << "\n"; for (int i = 0; i < n; i++) { std::cout << w[i] + 1 << " \n"[i == n - 1]; } for (int i = 0; i < n; i++) { std::cout << 1 << " \n"[i == n - 1]; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...