#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e5+5;
vector<int> ds[MAXN],leaf;
void dfs(int i,int pre)
{
	for(auto v:ds[i]) if(v!=pre) dfs(v,i);
	if(ds[i].size()==1) leaf.push_back(i);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<n;i++)
    {
    	int l,r;
    	cin>>l>>r;
    	ds[l].push_back(r),ds[r].push_back(l);
	}
	for(int i=1;i<=n;i++) if(ds[i].size()>1)
	{
		dfs(i,i);
		break;
	}
	int cnt=leaf.size();
	cout<<(cnt+1)/2<<"\n";
	for(int i=0;i<cnt/2;i++) cout<<leaf[i]<<" "<<leaf[i+cnt/2]<<"\n";
	if(cnt&1) cout<<leaf[0]<<" "<<leaf[cnt-1];
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |