제출 #634779

#제출 시각아이디문제언어결과실행 시간메모리
634779tvladm2009Network (BOI15_net)C++14
100 / 100
611 ms65464 KiB
#include <iostream> #include <vector> using namespace std; const int MAX_N = 5 * 1e5; vector<int> g[MAX_N + 1], leaves; int n; void dfs(int u, int p = -1) { for (int v : g[u]) { if (v != p) { dfs(v, u); } } if (g[u].size() == 1) { leaves.push_back(u); } } int main() { cin >> n; for (int i = 1; i <= n - 1; i++) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } int root = 0; for (int i = 1; i <= n; i++) { if (g[i].size() > 1) { root = i; } } dfs(root); cout << (leaves.size() + 1) / 2 << "\n"; int cnt = leaves.size() / 2; for (int i = 0; i < cnt; i++) { cout << leaves[i] << " " << leaves[i + cnt + leaves.size() % 2] << "\n"; } if (leaves.size() % 2 == 1) { cout << root << " " << leaves[cnt] << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...