#include "islands.h"
#include <bits/stdc++.h>
#define pii pair<int,int>
#define ff first
#define ss second
using namespace std;
variant<bool, vector<int>> find_journey(
int n, int m, vector<int> u, vector<int> v)
{
vector<int> dumy = {0,0};
vector<vector<pii>> graph(n);
for(int i = 0; i < m; i++)
graph[u[i]].push_back({v[i],i});
vector<int> vis(n,0);
vector<int> res,cyc;
function<int(int,int)> dfs = [&](int cur,int prev)
{
if(vis[cur]==1)return cur;
vis[cur] = 1;
int psen = -1;
for(pii a: graph[cur])
{
int val;
if(a.ff==prev)
{
if(psen<0){
psen = a.ss;
continue;
}
val = dfs(a.ff,-1);
}
else
val = dfs(a.ff,cur);
if(val>=0)
{
cyc.push_back(val);
res.push_back(a.ss);
return cur;
}
}
return -1;
};
dfs(0,0);
cyc.push_back(0);
if(cyc.size()==1)
return false;
reverse(res.begin(),res.end());
reverse(cyc.begin(),cyc.end());
int k = res.size();
int r =0;
while(cyc[r] != cyc.back())r++;
vector<int> ans;
for(int i = 0; i < r;i++)
ans.push_back(res[i]);
for(int i = r; i < k; i++)
ans.push_back(res[i]);
ans.push_back(res[r]^1);
ans.push_back(res[r]);
for(int i = k-1; i > r; i--)
ans.push_back(res[i]);
ans.push_back(res[r]^1);
for(int i = r-1; i >= 0;i--)
ans.push_back(res[i]);
return dumy;
}
| # | 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... |