#include "islands.h"
#include <bits/stdc++.h>
using namespace std;
std::variant<bool, std::vector<int>> find_journey(
    int N, int M, std::vector<int> U, std::vector<int> V) {
    vector<vector<array<int, 3>>> adj(N);
    vector<int> deg(N);
    for (int i = 0; i < M; ++i) {
      adj[U[i]].push_back({i, 0, V[i]});
      adj[V[i]].push_back({i, 1, U[i]});
    }
    vector<array<int, 2>> state(N);
    vector<array<int, 2>> state_fin(N);
    vector<int> edge(M);
    auto dfs = [&](auto& dfs, int v, int way, int lst) -> bool {
        if (state_fin[v][way] && !state[v][way]) return false;
        if (state[v][way]) {
          if (way == 1) {
            return true;
          }
          way ^= 1;
          if (state_fin[v][way]) return false;
        }
        state[v][way] = 1;
        state_fin[v][way] = 1;
        for (auto& [id, dir, u] : adj[v]) {
          if (edge[id] != dir || lst == id) continue;
          edge[id] = dir ^ 1;
          if (dfs(dfs, u, way, id)) return true;
          edge[id] = dir;
        }
        state[v][way] = 0;
        return false;
    };
    if (dfs(dfs, 0, 0, -1)) return vector<int>({1, 2, 3});
    return false;
    // cout << "\n";
    // for (auto& u : state) cout << u << " ";
    // cout << "\n";
    
}
| # | 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... |