Submission #1189055

#TimeUsernameProblemLanguageResultExecution timeMemory
1189055rendelNetwork (BOI15_net)C++20
0 / 100
6 ms12100 KiB
#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;
        if(!h[v]) dfs(v,u);
        h[u]=max(h[u],h[v]);
    }
    h[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[0].second <<' ' << g[l/2].second ;
    // 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=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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...