#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<int>> adj(N);
vector<int> deg(N);
for (int i = 0; i < M; ++i) {
adj[U[i]].push_back(V[i]);
deg[U[i]] += 1;
}
auto nadj = adj;
for (int i = 0; i < N; ++i) {
sort(begin(adj[i]), end(adj[i]));
adj[i].erase(unique(begin(adj[i]), end(adj[i])), end(adj[i]));
}
// 0 - processing, 1 - no cycle, 2 - path to a cycle
vector<int> state(N, -1);
auto dfs = [&](auto& dfs, int v) -> void {
// cout << v << " -> ";
state[v] = 0;
for (auto& u : adj[v]) {
if (state[u] == -1) {
dfs(dfs, u);
}
if (state[u] == 2) {
state[v] = 2;
return;
}
if (state[u] == 0) {
state[v] = 2;
return;
}
}
};
dfs(dfs, 0);
// cout << "\n";
// for (auto& u : state) cout << u << " ";
// cout << "\n";
int cnt = 0;
for (auto& u : nadj[0]) {
if (state[u] == 2) cnt += 1;
}
if (cnt >= 2 && deg[0] >= 2) return vector<int>({1});
return false;
}
# | 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... |