#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+5;
int deg[maxn];
vector<int> adj[maxn];
bool chk(int i,int j){
for(auto a : adj[i]){
for(auto b : adj[j]){
if(a==b) return false;
}
}
return true;
}
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]++;
}
vector<int> g;
for(int i=1;i<=n;++i){
if(deg[i]==1) g.emplace_back(i);
}
int l=g.size();
cout << (l+1)/2 << '\n';
vector<bool> vis(l,false);
vector<int> vec;
//for(auto i : g) cout << i << ' ';
for(int i=0;i<l/2;++i){
cout << g[i] << ' ' << g[l-i-1] <<'\n';
}
if(l%2==1) cout << g[l/2] << ' ' << g[0];
// for(int i=1;i<l;++i){
// if(chk(g[i],g[i-1]) && !vis[i] && !vis[i-1]){
// cout << g[i] << ' ' << g[i-1] << '\n';
// vis[i]=1; vis[i-1]=1;
// }
// if(!vis[i] && i==l-1) vec.emplace_back(i);
// if(!vis[i-1]) vec.emplace_back(i-1);
// }
// //for(auto i : vec) cout << i << ' ';
// if(vec.size()>1){
// for(int i=1;i<vec.size();++i){
// if(!vis[vec[i]] && !vis[vec[i-1]]){
// cout << g[vec[i]] << ' ' << g[vec[i-1]] << '\n';
// vis[vec[i]]=1; vis[vec[i-1]]=1;
// }
// }
// }
// for(int i=1;i<l;++i){
// if(!vis[i]){
// cout << g[i] << ' ' << g[i-1] << '\n';
// }
// }
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |