#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;
const int MAXN = 501;
ll grafo[MAXN][MAXN];
int count_common_roads(const vector<int> &r);
std::vector<int> find_roads(int n, std::vector<int> u, std::vector<int> v)
{
    ll i, j, act;
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            grafo[i][j]=-1;
    for(i=0; i<sz(u); i++)
    {
        grafo[u[i]][v[i]]=i;
        grafo[v[i]][u[i]]=i;
    }
    vector<int>ord;
    for(i=0; i<n; i++)
        ord.pb(i);
    do
    {
        vector<int>ars(n-1,-1),pads(n-1,-1);
        for(i=1; i<n; i++)
        {
            for(j=i-1; j>=0; j--)
            {
                if(grafo[ord[i]][ord[j]]!=-1)
                {
                    ars[i-1]=grafo[ord[i]][ord[j]];
                    pads[i-1]=ord[j];
                    break;
                }
            }
            if(ars[i-1]==-1)
                break;
        }
        if(ars[n-2]==-1)
            continue;
        ll cant=count_common_roads(ars);
        if(cant==n-1)
            return ars;
        for(i=1; i<n; i++)
        {
            ll ma=cant, pad=pads[i-1], ar=ars[i-1];
            for(j=i-1; j>=0; j--)
            {
                if(grafo[ord[i]][ord[j]]!=-1)
                {
                    ars[i-1]=grafo[ord[i]][ord[j]];
                    pads[i-1]=ord[j];
                    act=count_common_roads(ars);
                    if(act>ma)
                    {
                        ma=act;
                        pad=ord[j];
                        ar=grafo[ord[i]][ord[j]];
                    }
                }
            }
            pads[i-1]=pad;
            ars[i-1]=ar;
            cant=ma;
        }
        if(cant==n-1)
            return ars;
    }while(next_permutation(all(ord)));
    return ord;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |