#include "islands.h"
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using pi = pair<int, int>;
int n, m;
vector<vi> adj;
vi istate;
struct DSU {
int n; vector<int> par;
DSU(int N = 0) : n(N), par(N) {iota(par.begin(), par.end(), 0);}
int find(int v) {return par[v] == v ? v : par[v] = find(par[v]);}
void unite(int a, int b) {if (find(b) != find(a)) par[find(b)] = find(a);}
};
variant<bool, vi> find_journey(int N, int M, vi U, vi V) {
n = N; m = M; istate.assign(n, 0); adj.resize(n);
map<pi, int> ec;
vi deg(n);
for (int i = 0; i < m; i++) {
ec[{U[i], V[i]}]++;
deg[U[i]]++;
adj[U[i]].push_back(i);
// adj[V[i]].push_back(i);
}
int x = 0, p = -1;
vector<int> pre, maneuver;
while (deg[x] == 1) {
x = U[adj[x][0]] == x ? V[adj[x][0]] : U[adj[x][0]];
}
if (deg[x] == 0) return false;
int a = adj[x][0], b = -1, c = adj[x][1], d = -1;
if (a%2 == 0) b = a+1;
else b = a-1;
if (c%2 == 0) d = c+1;
else d = c-1;
maneuver.assign({a,b,c,d,b,a,d,c});
vector<int> post = pre; reverse(post.begin(), post.end());
for (auto &el : maneuver) pre.push_back(el);
for (auto &el : post) pre.push_back(el);
return pre;
}
| # | 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... |