#include "islands.h"
#include <bits/stdc++.h>
#define rep(a,b,c) for(ll a=b; a<c; a++)
#define repr(a,b,c) for(ll a=b-1; a>c-1; a--)
#define repa(a,b) for(auto a:b)
#define ll long long
#define pll pair<ll, ll>
#define pii pair<int, int>
#define fi first
#define se second
#define pb push_back
#define mid ((l+r)>>1)
#define ppb pop_back
#define pf push_front
using namespace std;
using vi = vector<int>;
template<typename T>
using vec = vector<T>;
const int N=2e5+5;
vec<pii> adj[N];
bool vis[N];
int de[N], n;
deque<int> vans;
bool solve(int u, int p, int e){
vis[u]=true;
int c[4]={-1,-1,-1,-1};
repa(v,adj[u]){
if(v.se==e || v.se%2 || v.se+1==e) continue;
if(de[v.se]==u && c[0]==-1) c[0]=v.se, c[2]=v.se+1;
else if(de[v.se]==u) c[1]=v.se, c[3]=v.se+1;
if(de[v.se]!=u && c[0]==-1) c[2]=v.se, c[0]=v.se+1;
else if(de[v.se]!=u) c[3]=v.se, c[1]=v.se+1;
}
if(min({c[0],c[1],c[2],c[3]})!=-1){
vans={c[0],c[1],c[2],c[3],c[1],c[0],c[3],c[2]};
rep(i,0,4) rep(j,i+1,4) assert(c[i]!=c[j]);
return true;
}
repa(v,adj[u]){
if(!vis[v.fi] && (solve(v.fi,u,v.se))){
vans.pf(v.se);
vans.pb(v.se);
return true;
}
}
return false;
}
std::variant<bool, std::vector<int>> find_journey(
int N, int M, std::vector<int> U, std::vector<int> V) {
vi a, b, ans;
n=N;
if(N==2){
rep(i,0,M){
if(U[i]==0) a.pb(i);
else b.pb(i);
}
if(a.size()<2 || b.size()<1) return false;
ans={a[0],b[0],a[1],a[0],b[0],a[1]};
return ans;
}
rep(i,0,M) adj[U[i]].pb({V[i],i});
rep(i,0,M) adj[V[i]].pb({U[i],i});
rep(i,0,M) de[i]=U[i];
if(N<=2) return false;
int c[4]={-1,-1,-1,-1};
rep(i,0,M){
if(U[i]==0 && V[i]==1) c[0]=(i);
if(U[i]==1 && V[i]==0) c[1]=(i);
if(U[i]==0 && V[i]==2) c[2]=(i);
if(U[i]==2 && V[i]==0) c[3]=(i);
}
ans={c[0],c[1],c[2],c[3],c[1],c[0],c[3],c[2]};
if(min({c[0],c[1],c[2],c[3]})!=-1)return ans;
if(solve(0,-1,-1)){
ans.clear();
repa(e,vans) ans.pb(e);
//rep(i,1,ans.size()) assert(a[i]!=a[i-1]);
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... |