Submission #1101942

#TimeUsernameProblemLanguageResultExecution timeMemory
1101942yoav_sVillage (BOI20_village)C++17
0 / 100
36 ms7624 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> v; typedef vector<v> vv; typedef vector<vv> vvv; typedef pair<ll, ll> p; typedef vector<p> vp; typedef vector<vp> vvp; typedef vector<vvp> vvvp; typedef pair<ll, p> tri; typedef vector<tri> vtri; typedef vector<vtri> vvtri; typedef vector<vvtri> vvvtri; typedef vector<bool> vb; typedef vector<vb> vvb; typedef vector<vvb> vvvb; #define f first #define s second #define pb push_back #define eb emplace_back #define all(v) (v).begin(),(v).end() const ll INF = 1e18; const ll mod = 1e9 + 7; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ll N; cin >> N; vv graph(N); for (ll i = 0; i < N - 1; i++) { ll a, b; cin >> a >> b; a--; b--; graph[a].pb(b); graph[b].pb(a); } vtri distances; for (ll i = 0; i < N; i++) { vb visited(N, false); stack<p> dfs; dfs.emplace(i, 0); while (!dfs.empty()) { auto top = dfs.top(); dfs.pop(); if (visited[top.f]) continue; visited[top.f] = true; distances.eb(top.s, p(i, top.f)); for (ll x : graph[top.f]) dfs.emplace(x, top.s + 1); } } sort(all(distances), greater<tri>()); vb takenFirst(N,false), takenLast(N, false); ll res = 0; v perm(N); for (auto x : distances) { if (takenFirst[x.s.f] || takenLast[x.s.s]) continue; takenFirst[x.s.f] = true; takenLast[x.s.s] = true; perm[x.s.f] = x.s.s; res += x.f; } cout << N << " " << res << "\n"; for (ll i = 0; i < N; i++) cout << "1 "; cout << "\n"; for (ll x : perm) cout << x + 1 << " "; cout << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...