Submission #1268558

#TimeUsernameProblemLanguageResultExecution timeMemory
1268558Born_To_LaughNetwork (BOI15_net)C++17
100 / 100
174 ms40884 KiB
// Born_To_Laugh - Hughie Do
#include <bits/stdc++.h>
#define alle(AC) AC.begin(), AC.end()
#define fi first
#define se second
using namespace std;
typedef long long ll;
[[maybe_unused]] const ll MOD = 998244353, INF = 1e9 + 7;
const int maxn = 5e5 + 10;
vector<int> adj[maxn];
int leafs[maxn];
int n;
int id = 0;
void dfs(int a, int par){
    if(adj[a].size() == 1){
        id++;
        leafs[id] = a;
    }
    for(auto &elm: adj[a]){
        if(elm == par)continue;
        dfs(elm, a);
    }
}
void solve(){
    cin >> n;
    for(int i=1; i<n; ++i){
        int a, b;cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dfs(1, -1);
    if(id & 1){
        cout << (id + 1) / 2 << '\n';
    }
    else cout << id/2 << '\n';
    for(int i=1; i<=(int)id/2; ++i){
        cout << leafs[i] << ' ' << leafs[i + (int)id/2] << '\n';
    }
    if(id & 1){
        cout << leafs[1] << ' ' << leafs[id] << '\n';
    }
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...