#include <bits/stdc++.h>
#include "islands.h"
using namespace std;
template <typename T>
using v = vector<T>;
using pii = pair<int, int>;
using ll = long long;
#define rep(i, k, n) for (int i = k; i < n; i++)
v<int> anterior;
v<v<int>> adj;
v<int> vis;
v<int> cycle;
int beg;
void dfs(int n, int p=-1) {
if (beg != -1) return;
//cout << n << endl;
vis[n] = 1;
anterior[n] = p;
for (auto x : adj[n]) {
if (beg != -1) return;
//cout << x << " " << beg << " " << vis[x] << endl;
if (vis[x] == 1) {
cycle.clear();
int u = n;
beg = x;
while (anterior[u] != -1) {
cycle.push_back(u);
u = anterior[u];
}
cycle.push_back(u);
reverse(cycle.begin(), cycle.end());
//check validity
int idx;
rep(i, 0, (int)cycle.size()) {
if (cycle[i] == beg) {
idx = i;
break;
}
}
return;
}
if (!vis[x]) {
dfs(x, n);
}
}
vis[n] = 2;
}
std::variant<bool, v<int>> find_journey(int N, int M, v<int> U, v<int> V) {
if (N == 2) return false;
map<pii, int> mp;
rep(i, 0, M) {
mp[{U[i], V[i]}] = i;
}
return v<int> {mp[{0, 1}], mp[{1, 0}], mp[{0, 2}], mp[{2, 0}], mp[{1, 0}], mp[{0, 1}], mp[{2, 0}], mp[{0, 2}]};
}
# | 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... |