Submission #1213426

#TimeUsernameProblemLanguageResultExecution timeMemory
1213426minhpkNetwork (BOI15_net)C++20
0 / 100
10 ms23876 KiB
#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){
    tour++;  
    par[i]=parent;
    sta[i]=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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...