#include <bits/stdc++.h>
#include "islands.h"
// #include "grader.cpp"
using namespace std;
const int N = 2e5 + 10;
int n, m, out_deg[N], dead[N];
vector<int> g[N], rev[N], U, V;
variant<bool, vector<int>> find_journey(int N, int M, vector<int> uu, vector<int> vv) {
V = vv, U = uu;
n = N, m = M;
for (int i = 0; i < m; i ++){
g[U[i]].push_back(i);
out_deg[U[i]]++;
rev[V[i]].push_back(i);
}
queue<int> q;
for (int i = 0; i < n; i ++)
if (!out_deg[i])
q.push(i);
while (!q.empty()){
int v = q.front();
q.pop();
dead[v] = 1;
for (int u : rev[v]){
out_deg[u]--;
if (!out_deg[u])
q.push(u);
}
}
if (dead[0]) return false;
for (int v = 0; v < n; v ++){
vector<int> adj;
for (int u : g[v])
if (!dead[u] and !dead[v]) adj.push_back(u);
g[v] = adj;
adj.clear();
for (int u : rev[v])
if (!dead[u] and !dead[v]) adj.push_back(u);
rev[v] = adj;
}
int start = 0;
while (out_deg[start] == 1){
int e = g[start][0];
int nxt = V[e];
start = nxt;
if (start == 0) break;
}
if (out_deg[start] <= 1) return false;
return true;
}
# | 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... |