Submission #1168948

#TimeUsernameProblemLanguageResultExecution timeMemory
1168948JohanNetwork (BOI15_net)C++20
0 / 100
11 ms23876 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(int i = 0; i < node.size(); i++){
    if(node.size() % 2 == 1 && i == node.size() - 1){
      cout << node[i] << ' ' << node[0] << endl;
      return 0;
    }
    if(i % 2 == 1)  continue;
    cout << node[i] << ' ' << node[i + 1] << endl;
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...