Submission #1155714

#TimeUsernameProblemLanguageResultExecution timeMemory
1155714fryingducNetwork (BOI15_net)C++20
100 / 100
329 ms51616 KiB
#include "bits/stdc++.h" using namespace std; #ifdef duc_debug #include "bits/debug.h" #else #define debug(...) #endif const int maxn = 5e5 + 5; int n, h[maxn]; vector<int> g[maxn]; vector<int> leaves; void pre_dfs(int u, int prev) { if ((int)g[u].size() == 1) { leaves.push_back(u); } for (auto v:g[u]) { if (v == prev) continue; h[v] = h[u] + 1; pre_dfs(v, u); } } void solve() { cin >> n; int root = 0; for (int i = 1; i < n; ++i) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } for (int i = 1; i <= n; ++i) { if ((int)g[i].size() > 1) { root = i; break; } } pre_dfs(root, 0); cout << ((int)leaves.size() + 1) / 2 << '\n'; for (int i = 0; i < ((int)leaves.size() + 1) / 2; ++i) { if (i == (int)leaves.size() / 2) { cout << leaves.back() << " " << leaves[0] << '\n'; } else { cout << leaves[i] << " " << leaves[i + (int)leaves.size() / 2] << '\n'; } } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...