#include <bits/stdc++.h>
bool are_connected(std::vector<int> A, std::vector<int> B);
std::vector<int> longest_trip(int n, int d) {
std::vector<std::set<int>> adj(n);
auto add_edge = [&](int u, int v) {
adj[u].insert(v);
adj[v].insert(u);
};
for (int i = 0; i < n; ++i) {
std::vector<int> search;
for (int j = i + 1; j < n; ++j) {
if (are_connected({i}, {j})) {
add_edge(i, j);
}
}
}
std::deque<int> ans;
ans.push_back(0);
std::vector<bool> vis(n);
vis[0] = true;
while (true) {
bool changed = false;
for (int i : adj[ans.front()]) {
if (vis[i]) {
continue;
}
vis[i] = true;
ans.push_front(i);
changed = true;
}
for (int i : adj[ans.back()]) {
if (vis[i]) {
continue;
}
vis[i] = true;
ans.push_back(i);
changed = true;
}
if (!changed) {
break;
}
}
return std::vector<int>(ans.begin(), ans.end());
}
# | 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... |