Submission #1168937

#TimeUsernameProblemLanguageResultExecution timeMemory
1168937JohanNetwork (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;

map < pair < int , int > , int > mp;
vector < vector < int > > adj(MAX);
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);
  }
  vector < int > node;
  for(int i = 1; i <= n; i++){
    if(adj[i].size() == 1)
      node.push_back(i);
  }
  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...