Submission #1014295

#TimeUsernameProblemLanguageResultExecution timeMemory
1014295JakobZorzLongest Trip (IOI23_longesttrip)C++17
60 / 100
247 ms600 KiB
#include"longesttrip.h"
#include<iostream>
using namespace std;

int n;

vector<int>longest_trip(int N,int D){
    n=N;
    vector<int>res={0};
    vector<bool>vis(n);
    vis[0]=true;
    while(true){
        int node=res.back();
        //cout<<"VIS "<<node<<"\n";
        for(int ne=0;ne<n;ne++){
            if(!vis[ne]&&are_connected({node},{ne})){
                res.push_back(ne);
                break;
            }
        }
        vis[res.back()]=true;
        if(node==res.back())
            break;
    }
    vector<int>res2;
    for(int j=0;j<n;j++)
        if(!vis[j])
            res2.push_back(j);
    // all unvisited are strongly connected
    if(res2.size()){
        for(int i=0;i<(int)res.size();i++){
            if(are_connected(res2,{res[i]})){
                for(int ne=0;ne<n;ne++){
                    if(!vis[ne]&&are_connected({ne},{res[i]})){
                        vector<int>res2;
                        for(int j=0;j<n;j++)
                            if(!vis[j]&&j!=ne)
                                res2.push_back(j);
                        res2.push_back(ne);
                        for(int j=i;j<(int)res.size();j++)
                            res2.push_back(res[j]);
                        for(int j=0;j<i;j++)
                            res2.push_back(res[j]);
                        /*cout<<"ARR1 ";
                         for(int i:res2)
                         cout<<i<<" ";
                         cout<<"\n";*/
                        return res2;
                    }
                }
            }
        }
    }
    if(res.size()>res2.size()){
        /*cout<<"ARR2 ";
        for(int i:res)
            cout<<i<<" ";
        cout<<"\n";*/
        return res;
    }else{
        /*cout<<"ARR3 ";
        for(int i:res2)
            cout<<i<<" ";
        cout<<"\n";*/
        return res2;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...