Submission #1155710

#TimeUsernameProblemLanguageResultExecution timeMemory
1155710fryingducNetwork (BOI15_net)C++20
0 / 100
8 ms12100 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], tin[maxn], timer; vector<int> g[maxn]; vector<int> leaves; void pre_dfs(int u, int prev) { if ((int)g[u].size() == 1) { leaves.push_back(u); } tin[u] = ++timer; 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'; sort(leaves.begin(), leaves.end(), [](const int &x, const int &y) -> bool { return tin[x] < tin[y]; }); for (int i = 0; i < ((int)leaves.size() + 1) / 2; ++i) { int rv = (int)leaves.size() - i - 1; if (i == rv) { rv = 0; } cout << leaves[i] << " " << leaves[rv] << '\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...