제출 #1266395

#제출 시각아이디문제언어결과실행 시간메모리
1266395nguyenhuythachVillage (BOI20_village)C++20
0 / 100
0 ms324 KiB
//cre: johutha //greedy idea on cf tutorial #include <iostream> #include <vector> #include <algorithm> #define int int64_t using namespace std; struct graph { int n; vector<vector<int>> adjlist; vector<int> pre; vector<int> subtc; int d = 0; void dfs(int curr, int par) { pre.emplace_back(curr); subtc[curr] = 1; for (auto next : adjlist[curr]) { if (next == par) continue; dfs(next, curr); subtc[curr] += subtc[next]; d += 2*min(subtc[next], n - subtc[next]); } } void solve() { subtc.resize(n, 0); dfs(0, -1); cout << d << "\n"; vector<int> sol(n); for (int i = 0; i < n; i++) { sol[pre[(i + n/2) % n]] = pre[i]; } for (auto i : sol) { cout << i + 1 << " "; } cout << "\n"; } }; signed main() { int n; cin >> n; graph g; g.n = n; g.adjlist.resize(n); for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; a--; b--; g.adjlist[a].push_back(b); g.adjlist[b].push_back(a); } g.solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...