제출 #1161647

#제출 시각아이디문제언어결과실행 시간메모리
1161647Aviansh즐거운 행로 (APIO20_fun)C++20
26 / 100
54 ms15548 KiB
#include "fun.h"

#include <bits/stdc++.h>

using namespace std;
int f;
void dfs(int st, vector<int>(&g)[], int p, int dep, int d[], bool rem[]){
    d[st]=dep;
    if(d[f]<dep){
        f=st;
    }
    for(int i : g[st]){
        if(i==p||rem[i])
            continue;
        dfs(i,g,st,dep+1,d,rem);
    }
}

int findFarthest(int x, vector<int>(&g)[], bool rem[], int n){
    f=x;
    int d[n];
    fill(d,d+n,0);
    dfs(x,g,-1,0,d,rem);
    return f;
}

vector<int> createFunTour(int n, int q) {
  //  int H = hoursRequired(0, N - 1);
    //int A = attractionsBehind(0, N - 1);
    vector<int>g[n];
    vector<int>ans;
    for(int i = 0;i<n;i++){
        for(int j = i+1;j<n;j++){
            if(hoursRequired(i,j)==1){
                g[i].push_back(j);
                g[j].push_back(i);
            }
        }
    }
    //graph acquired
    bool rem[n];
    fill(rem,rem+n,0);
    int x = findFarthest(0,g,rem, n);
    for(int i = 0;i<n;i++){
        //i just for counting
        ans.push_back(x);
        rem[x]=1;
        x=findFarthest(x,g,rem, n);
    }
    return ans;
}
#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...