#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAX_N = 100005;
vector<ll>adj[MAX_N];
ll visited[MAX_N],ans,ans1;
ll order[MAX_N],cnt=1;
ll sub[MAX_N],N;
void dfs_1(int v, int p){
    sub[v] = 1;
    for(auto u : adj[v]) {
        if(u == p) continue;
        dfs_1(u, v);
        sub[v] += sub[u];
    }
}
int get_centroid(int v, int p) {
    for(auto u : adj[v]) {
        if(u == p) continue;
        if(sub[u] > N/2) return get_centroid(u, v);
    }
    return v;
}
void dfs(int s, int p) {
    for(int u : adj[s]) {
        if(u == p) continue;
        dfs(u,s);
    }
    if(!visited[s] and !visited[p] and s and p) {
        visited[s] = p;
        visited[p] = s;
        ans+=2;
    }
}
void dfs2(int s, int p) {
    order[cnt++] = s;
    for(int u : adj[s]) {
        if(u == p) continue;
        dfs2(u,s);
    }
}
void solve() {
    ll n; cin >> n;
    N=n;
    for(int i=0; i<n-1; i++) {
        int a,b; cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dfs(1,0);
    for(int i=1; i<=n; i++) {
        if(!visited[i]) {
            visited[i] = i;
            swap(visited[i], visited[adj[i][0]]);
            ans+=2;
        }
    }
    dfs_1(1, 1);
    ll c = get_centroid(1, 1);
    dfs_1(c, c);
    for(int i=1; i<=n; i++) {
        ans1 += 2 * min(sub[i], n - sub[i]);
    }
    cout << ans << " " << ans1 << endl;
    for(int i=1; i<=n; i++) cout << visited[i] << " ";
    cout << endl;
    dfs2(1,0);
    ll Ans[n+1];
    for(int i=1; i<=n; i++) {
        int tmp = (i+n/2)%n;
        if(tmp == 0) tmp = n;
        Ans[order[i]] = order[tmp];
    }
    for(int i=1; i<=n; i++) cout << Ans[i] << " ";
    cout << endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int t=1;
    while(t--) solve();
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |