Submission #1014266

#TimeUsernameProblemLanguageResultExecution timeMemory
1014266JakobZorzLongest Trip (IOI23_longesttrip)C++17
30 / 100
839 ms1368 KiB
#include"longesttrip.h"
#include<iostream>
using namespace std;

int n;
vector<int>nodes[500];

vector<int>longest_trip(int N,int D){
    n=N;
    for(int i=0;i<n;i++)
        nodes[i].clear();
    
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            if(are_connected({i},{j})){
                nodes[i].push_back(j);
                nodes[j].push_back(i);
                //cout<<"CONN "<<i<<" "<<j<<"\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:nodes[node])
            if(!vis[ne]){
                res.push_back(ne);
                break;
            }
        vis[res.back()]=true;
        if(node==res.back())
            break;
    }
    // all unvisited are strongly connected
    /*for(int i=0;i<(int)res.size();i++){
        for(int ne:nodes[res[i]]){
            if(!vis[ne]){
                vector<int>res2;
                for(int j=0;j<n;j++)
                    if(!vis[j])
                        res2.push_back(j);
                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]);
                return res2;
            }
        }
    }*/
    vector<int>res2;
    for(int j=0;j<n;j++)
        if(!vis[j])
            res2.push_back(j);
    if(res.size()>res2.size())
        return res;
    else
        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...