Submission #1168984

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

bool used[MAX];
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);
  // for(int i = 1; i <= n; i++){
  //   if(adj[i].size() == 1)
  //     node.push_back(i);
  // }
  cout << (node.size() + 1) / 2 << endl;
  srand(time(0));
  for(auto i : node){
    vector < int > idx;
    if(used[i]) continue;
    used[i] = true;
    for(auto j : node){
      // if(i == j)  continue;
      if(!used[j])
        idx.push_back(j);
    }
    if(!idx.size()){
      cout << i << ' ' << node[node.size() - 1] << endl;
      continue;
    }
    int in = rand() % (int)idx.size();
    cout << i << ' ' << idx[in] << endl;
    used[idx[in]]  = true;
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...