#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;
for (int i = 0; i < m; i++) {
ec[{U[i], V[i]}]++;
adj[U[i]].push_back(i);
adj[V[i]].push_back(i);
}
int timer = 0;
vi tin(n, -1);
set<int> vis; vis.insert(0);
auto dfs = [&](auto &&self, int u) {
tin[u] = timer++;
for (auto e : adj[u]) {
if (U[e] != u) continue;
int v = V[e];
if (vis.count(v)) {
if (tin[u] > tin[v]) return true;
else continue;
}
vis.insert(v);
if (self(self, v)) {
return true;
}
}
return false;
};
return dfs(dfs, 0);
}
| # | 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... |