Submission #1168939

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