#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+5;
int deg[maxn],h[maxn];
vector<int> adj[maxn];
void dfs(int u,int p){
for(auto v : adj[u]){
if(v==p) continue;
h[v]=h[u]+1;
dfs(v,u);
}
}
int main(){
cin.tie(nullptr)->sync_with_stdio(false); cout.tie(0);
int n; cin >> n;
for(int i=0;i<n-1;++i){
int a,b; cin >> a >> b;
adj[a].emplace_back(b);
adj[b].emplace_back(a);
deg[a]++, deg[b]++;
}
dfs(1,0);
vector<pair<int,int>> g;
for(int i=1;i<=n;++i){
if(deg[i]==1) g.emplace_back(h[i],i);
}
int l=g.size();
cout << (l+1)/2 << '\n';
sort(g.begin(),g.end());
for(int i=0;i<l/2;++i){
cout << g[i].second << ' ' << g[l-i-1].second <<'\n';
}
if(l%2==1) cout << g[l-1].second << ' ' << g[l/2].second ;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |