#include "islands.h"
#include<bits/stdc++.h>
#include <variant>
#include <vector>
using namespace std;
// pega a dfstree. se eu tenho alguma backedge -> ok
// cc -> ruim, porque eu nunca vou conseguir subir para 0
const int N = 1010;
const int M = 200010;
vector <pair <int, int>> g[N];
int tin[N], tout[N];
int mark[N];
int tmm = 1;
void dfs(int v, int p){
tin[v] = tmm;
tmm++;
mark[v] = 1;
for(auto [x, i] : g[v]){
if(mark[x])
continue;
dfs(x, v);
}
tout[v] = tmm;
tmm++;
}
std::variant<bool, std::vector<int>> find_journey(
int N, int m, std::vector<int> U, std::vector<int> V) {
vector <pair <int, int>> arestas;
for(int i = 0;i < m;i++){
g[U[i]].push_back({V[i], i});
arestas.push_back({U[i], V[i]});
}
memset(mark, 0, sizeof mark);
memset(tin, -1, sizeof tin);
memset(tout, -1, sizeof tout);
dfs(0, 0);
vector <int> ans = {};
for(auto [x, y] : arestas){
if(mark[x] == 0 or mark[y] == 0) continue;
if(tin[y] <= tin[x] and tout[x] <= tout[y])
return ans;
}
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... |