#include "fun.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 5e18
#define nl '\n'
const int N = 1e5;
vector<int> g[N];
int vis[N];
int mx, x;
void dfs(int v, int p, int d){
if(d > mx){
mx = d;
x = v;
}
for(int ch : g[v]){
if(ch != p) dfs(ch, v, d+1);
}
}
vector<int> createFunTour(int n, int q){
if(n <= 500){
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);
}
}
}
}
else{
for(int i=1; i<n; i++){
int x = (i-1)/2;
g[i].push_back(x);
g[x].push_back(i);
}
}
dfs(0, -1, 0);
int y = x;
mx = 0;
dfs(y, -1, 0);
int t = 0;
vector<int> ans;
while(ans.size() < n){
int &v = t ? y : x;
int nv = t ? x : y;
ans.push_back(v);
vis[v] = 1;
t = !t;
for(int ch : g[v]) if(!vis[ch]) v = ch;
int c1 = -1, c2 = -1;
for(int ch : g[v]){
if(vis[ch]) continue;
if(c1 == -1) c1 = ch;
else c2 = ch;
}
if(c2 == -1) continue;
if(hoursRequired(nv, c1) > hoursRequired(nv, c2)) v = c1;
else v = c2;
}
return ans;
}
# | 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... |