Submission #1168957

#TimeUsernameProblemLanguageResultExecution timeMemory
1168957JohanNetwork (BOI15_net)C++20
100 / 100
1215 ms120540 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int inf = 1e18;
const int MAX = 1e6 + 6;

vector < int > node;
map < pair < int , int > , int > mp;
vector < vector < int > > adj(MAX);
void dfs(int u, int pa){
  if(adj[u].size() == 1)
    node.push_back(u);
  for(auto v : adj[u]){
    if(v == pa) continue;
    dfs(v, u);
  }
}

signed main(){
  int n;
  cin >> n;
  for(int i = 1; i < n; i++){
    int u, v;
    cin >> u >> v;
    mp[{u, v}] = 1;
    mp[{v, u}] = 1;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  dfs(1, 0);
  cout << (node.size() + 1) / 2 << endl;
  // for(auto i : node)
  //   cout << i << ' ';
  // cout << endl;
  for(int i = 0; i < (node.size() + 1) / 2; i++){
    if(node.size() % 2 == 1 && i + 1 == (node.size() + 1) / 2){
      cout << node[i] << ' ' << node[node.size() - 1] << endl;
      return 0;
    }
    cout << node[i] << ' ' << node[i + (node.size() + 1) / 2] << endl;
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...