Submission #1142878

#TimeUsernameProblemLanguageResultExecution timeMemory
1142878dpsaveslivesNetwork (BOI15_net)C++20
100 / 100
198 ms60868 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 5e5+5; vector<int> adj[MAXN]; vector<int> deg,leaf; void dfs(int u, int p){ if(deg[u] == 1){ leaf.push_back(u); return; } for(auto v : adj[u]){ if(v != p){ dfs(v,u); } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin >> N; deg = vector<int>(N+1,0); for(int i = 0;i<=N-2;++i){ int u,v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); ++deg[u]; ++deg[v]; } int root = 1; for(int i = 1;i<=N;++i){ if(deg[i] >= 2){ root = i; } } dfs(root,0); vector<pair<int,int>> ans; for(int i = 0;i<=(leaf.size()/2)-1;++i){ ans.push_back({leaf[i],leaf[i+leaf.size()/2]}); } if(leaf.size() % 2 == 1){ ans.push_back({leaf[0],leaf[leaf.size()-1]}); } cout << ans.size() << "\n"; for(auto x : ans){ cout << x.first << " " << x.second << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...