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...