# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1024858 | Svizel_pritula | Longest Trip (IOI23_longesttrip) | C++17 | 216 ms | 436 KiB |
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 <bits/stdc++.h>
#include "longesttrip.h"
std::vector<int> longest_trip(int cities, int density)
{
std::vector<int> path;
path.push_back(0);
std::vector<int> unconnected;
for (int i = 1; i < cities; i++)
unconnected.push_back(i);
while (unconnected.size() > 0)
{
bool found = false;
for (auto p = unconnected.begin(); p < unconnected.end(); p++)
{
if (are_connected({path.back()}, {*p}))
{
path.push_back(*p);
unconnected.erase(p);
found = true;
break;
}
}
if (!found)
{
break;
}
}
if (unconnected.size() == 0)
return path;
int max_dist = std::min((path.size() + 1) / 2, unconnected.size());
int join_point = -1;
for (int dist = 0; dist <= max_dist; dist++)
{
int a = dist;
int b = path.size() - dist - 1;
if (are_connected(unconnected, {path[a]}))
{
join_point = a;
break;
}
if (are_connected(unconnected, {path[b]}))
{
join_point = b;
break;
}
}
if (join_point == -1)
{
if (path.size() > unconnected.size())
return path;
else
return unconnected;
}
int opposite_node = -1;
for (int node : unconnected)
{
if (are_connected({node}, {path[join_point]}))
{
opposite_node = node;
break;
}
}
std::vector<int> result;
if (join_point >= path.size() / 2)
{
for (int i = 0; i <= join_point; i++)
result.push_back(path[i]);
}
else
{
for (int i = path.size() - 1; i >= join_point; i--)
result.push_back(path[i]);
}
result.push_back(opposite_node);
for (int node : unconnected)
if (node != opposite_node)
result.push_back(node);
return result;
}
Compilation message (stderr)
# | 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... |