Submission #1313517

#TimeUsernameProblemLanguageResultExecution timeMemory
1313517amloxgVillage (BOI20_village)C++20
12 / 100
1095 ms568 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
typedef vector<vector<int>> Graph;

void genDists(int node, int parent, vector<int> &dists, Graph const& tree){
    dists[node] = dists[parent] + 1;
    for (auto next_node : tree[node]) if (next_node != parent)
        genDists(next_node, node, dists, tree);
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int nodes_num;
    cin >> nodes_num;
    Graph tree(nodes_num+1);
    for (int edge = 0; edge < nodes_num-1; ++edge){
        int node_a, node_b;
        cin >> node_a >> node_b;
        tree[node_a].push_back(node_b);
        tree[node_b].push_back(node_a);
    }

    vector<vector<int>> dists(nodes_num+1, vector<int>(nodes_num+1, -1));
    for (int node = 1; node <= nodes_num; ++node) genDists(node, 0, dists[node], tree);

    int min_res = 1e9, max_res = 0;
    vector<int> min_vec, max_vec;

    vector<int> next(nodes_num);
    for (int i = 0; i < nodes_num; ++i) next[i] = i;
    do{
        int curr_res=0;
        bool wrong = false;
        for (int node = 1; node <= nodes_num; ++node){
            if (node == next[node-1]+1) wrong = true;
            curr_res += dists[node][next[node-1]+1];
        }
        if (wrong) continue;
        
        if (curr_res < min_res){
            min_res = curr_res;
            min_vec = next;
        }
        if (curr_res > max_res){
            max_res = curr_res;
            max_vec = next;
        }
    }while(next_permutation(next.begin(), next.end()));

    cout << min_res << ' ' << max_res << '\n';
    for (auto res : min_vec) cout << res + 1 << ' ';
    cout << '\n';
    for (auto res : max_vec) cout << res + 1 << ' ';
    cout << '\n';

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...