Submission #1354407

#TimeUsernameProblemLanguageResultExecution timeMemory
1354407hsuan._.0528Carnival (EGOI23_carnival)C++20
63 / 100
1094 ms7536 KiB
//pa

#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn = 1000 + 10;

int n;
int a[maxn][maxn];
vector<int> v[maxn];
int order[maxn];
int vis[maxn];

void dfs(int x, int num){
 // cout<<x<<"\n";
    if(num==n){
        for(int i=1; i<=n; i++)  cout<<order[i]<<" ";
        exit(0);
    }
    for(int y: v[x]){
        if(vis[y])  continue;
        order[num+1] = y;
        vis[y]=1;
        dfs(y, num+1);
        vis[y]=0;
    }
}

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

    cin>>n;
    for(int i=0; i<n; i++)
        for(int j=0; j<i; j++){
            int aa;  cin>>aa;
            //a[aa][i]=a[i][aa]=1;
         //   cout<<i<<" "<<a<<" / "<<(j+1)<<" "<<(i+1)/2<<"\n";
            if((j+1) <= (i+1)/2){
                a[aa][i]=a[i][aa]=1;
              //  v[a].push_back(i);
               // v[i].push_back(a);
              //v[a].insert(i);
            //  v[i].insert(a);
            }
        }
    for(int i=0; i<n; i++)
        for(int j=n-1; j>=0; j--){
          if(a[i][j]==1)  v[i].push_back(j);
        }

//    for(int i=0; i<n; i++)  sort(v[i].begin(), v[i].end(), greater<int>());
    order[1] = n-1;
    vis[n-1]=1;
    dfs(n-1, 1);
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...