제출 #1327739

#제출 시각아이디문제언어결과실행 시간메모리
1327739SpyrosAliv가장 긴 여행 (IOI23_longesttrip)C++20
0 / 100
0 ms400 KiB
#include "longesttrip.h"
#include <bits/stdc++.h>
using namespace std;

int n;

std::vector<int> longest_trip(int N, int D)
{
    n = N;
    assert(D >= 2);
    vector<int> path;
    vector<bool> used(n, false);
    path.push_back(0);
    used[0] = true;
    while (path.size() != n) {
        int lst = path.back();
        vector<int> cands;
        for (int i = 0; i < n; i++) {
            if (!used[i]) cands.push_back(i);
        }
        bool conn = are_connected({path.back()}, {cands});
        if (!conn) {
            if (cands.size() > path.size()) return cands;
            return path;
        }
        int nxt = -1;
        int lo = 0, hi = cands.size() - 1;
        while (lo <= hi) {
            int mid = (lo + hi) / 2;
            vector<int> qr;
            for (int j = 0; j <= mid; j++) {
                qr.push_back(cands[j]);
            }
            bool conn = are_connected({path.back()}, qr);
            if (conn) {
                nxt = cands.back();
                hi = mid-1;
            }
            else lo = mid+1;
        }
        path.push_back(nxt);
    }
    return path;
}
#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...