#include <bits/stdc++.h>
#define int long long
using namespace std;
int a;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
vector<int> z[1000005];
vector <int> v;
int sta[1000005];
int fin[1000005];
int tour;
bool cmp(int a,int b){
return sta[a]<sta[b];
}
bool check[100005];
int par[1000005];
void dfs(int i,int parent){
par[i]=parent;
sta[i]=tour;
tour++;
for (auto p:z[i]){
if (p==parent){
continue;
}
dfs(p,i);
}
fin[i]=tour;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> a;
for (int i=1;i<a;i++){
int x,y;
cin >> x >> y;
z[y].push_back(x);
z[x].push_back(y);
}
for (int i=1;i<=a;i++){
if (z[i].size()==1){
// cout << "ok" << "\n";
check[i]=true;
v.push_back(i);
}
}
dfs(1,0);
int k=v.size();
cout << (k+1)/2 << "\n";
sort(v.begin(),v.end(),cmp);
if (k%2==1){
v.push_back(v[0]);
}
for (int i=0;i<v.size();i+=2){
cout << v[i] << " " << v[i+1] << "\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |