#include "longesttrip.h"
#include<bits/stdc++.h>
using namespace std;
vector<int> longest_trip(int N, int D){
    vector<int> p;
    vector<bool> in(N, false);
    p.push_back(0);
    in[0] = true;
    bool rev = false;
    while (true){
        int cur = p.back();
        for (int i=0; i<N; i++){
            if (in[i]) continue;
            if (are_connected({p.back()}, {i})){
                p.push_back(i);
                in[i] = true;
                break;
            }
        }
        if (cur == p.back()){
            if (rev) break;
            rev = true;
            reverse(p.begin(), p.end());
        }
    }
    for (int i=1; i<(int)p.size()-1; i++){
        for (int j=0; j<N; j++){
            if (in[j]) continue;
            if (are_connected({p[i]}, {j})){
                vector<int> np;
                for (int ci=i+1; ci<p.size(); ci++) np.push_back(p[ci]);
                for (int ci=0; ci<=i; ci++) np.push_back(p[ci]);
                np.push_back(j);
                in[j] = true;
                for (int ci=0; ci<N; ci++){
                    if (!in[ci]) np.push_back(ci);
                }
                return np;
            }
        }
    }
    if (p.size() > N/2) return p;
    vector<int> np;
    for (int i=0; i<N; i++){
        if (!in[i]) np.push_back(i);
    }
    return np;
}
| # | 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... |