#include "islands.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
variant<bool, vector<int>> find_journey(int n, int m, vector<int> u, vector<int> v) {
vector<pair<ll,ll>> g[n];
for(ll i=0; i<m; i++){
g[u[i]].push_back({v[i],i});
}
if(g[0].size()==0) return false;
else if(g[0].size()>=2){
vector<int> ans;
ll a1=g[0][0].second, b1=g[0][1].second, a2, b2;
if(a1%2==0) a2=a1+1;
else a2=a1-1;
if(b1%2==0) b2=b1+1;
else b2=b1-1;
ans.push_back(a1);
ans.push_back(a2);
ans.push_back(b1);
ans.push_back(b2);
ans.push_back(a2);
ans.push_back(a1);
ans.push_back(b2);
ans.push_back(b1);
return ans;
}
else{
ll curr=g[0][0].first, prev=0;
vector<int> ans, ans2;
ans.push_back(g[0][0].second);
ans2.push_back(g[0][0].second);
while(g[curr].size()<=2){
if(g[curr].size()==1) return false;
else{
ll nxt;
if(g[curr][0].first==prev){
nxt=g[curr][1].first;
ans.push_back(g[curr][1].second);
ans2.push_back(g[curr][1].second);
}
else{
nxt=g[curr][0].first;
ans.push_back(g[curr][0].second);
ans2.push_back(g[curr][0].second);
}
prev=curr;
curr=nxt;
}
}
ll a1, b1, a2, b2;
if(g[curr][0].first==prev){
a1=g[curr][1].second;
b1=g[curr][2].second;
}
else if(g[curr][1].first==prev){
a1=g[curr][0].second;
b1=g[curr][2].second;
}
else{
a1=g[curr][0].second;
b1=g[curr][1].second;
}
if(a1%2==0) a2=a1+1;
else a2=a1-1;
if(b1%2==0) b2=b1+1;
else b2=b1-1;
ans.push_back(a1);
ans.push_back(a2);
ans.push_back(b1);
ans.push_back(b2);
ans.push_back(a2);
ans.push_back(a1);
ans.push_back(b2);
ans.push_back(b1);
reverse(ans2.begin(),ans2.end());
for(auto i:ans2){
ans.push_back(i);
}
return ans;
}
}
# | 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... |