Submission #1182162

#TimeUsernameProblemLanguageResultExecution timeMemory
1182162qwushaVillage (BOI20_village)C++20
50 / 100
39 ms19524 KiB
#include <bits/stdc++.h> using namespace std; /* #pragma GCC optimize("O3") #include <bitset> #pragma GCC target("avx2")*/ #define fi first #define se second #define int long long typedef long long ll; typedef long double ld; mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count()); int inf = 1e15; vector<vector<int>> g; vector<int> used; vector<int> gto, cfrom; int res = 0; void dfs(int v, int p = -1) { vector<int> s; for (auto u : g[v]) { if (u == p) continue; dfs(u, v); if (!used[u]) s.push_back(u); } if (s.size() != 0) { res += s.size() * 2; used[v] = 1; gto[v] = s[0]; cfrom[v] = s[s.size() - 1]; gto[s[s.size() - 1]] = v; cfrom[s[0]] = v; for (int i = 0; i < s.size() - 1; i++) { gto[s[i]] = s[i + 1]; cfrom[s[i + 1]] = s[i]; } } else if (s.size() == 0 && p == -1) { res += 2; int u = g[v][0]; gto[v] = u; gto[cfrom[u]] = v; cfrom[v] = cfrom[u]; cfrom[u] = v; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; used.resize(n); g.resize(n); gto.resize(n); cfrom.resize(n); for (int i = 0; i < n - 1; i++) { int v, u; cin >> v >> u; g[v - 1].push_back(u - 1); g[u - 1].push_back(v - 1); } dfs(0); cout << res << ' ' << 1 << '\n'; for (int i = 0; i < n; i++) { cout << gto[i] + 1 << ' '; } cout << '\n'; for (int i = 0; i < n; i++) { cout << 1 << ' '; } cout << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...