This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
///////////////////////////////////////////
#include "fun.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
const int N2 = 1000;
int d[N2][N2];
vector <int> a[N2];
bool vis[N2];
void dfs(vector <int> &d, int u, int par = -1){
for(int i : a[u]){
if (i == par || vis[i]) continue;
d[i] = d[u] + 1;
dfs(d, i, u);
}
}
std::vector<int> createFunTour(int N, int Q) {
for(int i = 0; i < N; ++i){
for(int j = i + 1; j < N; ++j){
d[i][j] = d[j][i] = hoursRequired(i, j);
if (hoursRequired(i, j) == 1){
a[i].push_back(j);
a[j].push_back(i);
}
}
}
vector <int> d(N, 0);
dfs(d, 1);
pair<int, int> ma = {-1, -1};
for(int i = 0; i < N; ++i){
ma = max(ma, {d[i], i});
}
vector <int> ans;
int u = ma.second;
ans.push_back(u);
vis[u] = true;
while ((int)ans.size() < N){
d[u] = 0; dfs(d, u);
pair<int, int> ma = {-1, -1};
for(int i = 0; i < N; ++i){
if (vis[i]) continue;
ma = max(ma, {d[i], i});
}
u = ma.second;
ans.push_back(u);
vis[u] = true;
}
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... |