Submission #1338505

#TimeUsernameProblemLanguageResultExecution timeMemory
1338505stoneVillage (BOI20_village)C++20
50 / 100
70 ms16168 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int lim = 1e5 + 5;
const int INF = 1e9;
int n;
vector<int>g[lim];
  int vmin = 0, par[lim], pmax[lim], pmin[lim], siz[lim];
  ll vmax = 0;
  vector<int>tour;
  void dfs(int s){
    tour.push_back(s);
    siz[s] = 1;
    for(int& d : g[s]){
      if(d != par[s]){
        par[d] = s;
        dfs(d);
        siz[s] += siz[d];
        vmax += min(siz[d], n - siz[d]);
      }
    }
  }
  void solve(){
    par[1] = 0;
    dfs(1);
    for(int i = 0; i < n; i++){
      pmax[tour[i]] = tour[(i + (n >> 1)) % n];
    }
    cout << vmax << " " << (vmax << 1LL) << "\n";
    for(int i = 1; i <= n; i++){
      cout << pmax[i] << " ";
    }
    cout << "\n";
    for(int i = 1; i <= n; i++){
      cout << pmax[i] << " ";
    }
  }
int main(){
  cin >> n;
  for(int i = 1; i < n; i++){
    int u, v;
    cin >> u >> v;
    g[u].push_back(v);
    g[v].push_back(u);
  }
   solve();
  
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...