#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()
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];
bool solve(int u, int p){
vis[u]=true;
if(adj[u].size()>=6) return true;
repa(v,adj[u]) if(!vis[v.fi]) if(solve(v.fi,u)) 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;
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,N) adj[i].clear();
rep(i,0,M) adj[U[i]].pb({V[i],i});
rep(i,0,M) adj[V[i]].pb({U[i],i});
if(N<=400){
if(N<=2) return false;
rep(i,0,M){
if(U[i]==0 && V[i]==1) a.pb(i);
if(U[i]==1 && V[i]==0) a.pb(i);
if(U[i]==0 && V[i]==2) b.pb(i);
if(U[i]==2 && V[i]==0) b.pb(i);
}
ans={a[0],a[1],b[0],b[1],a[1],a[0],b[1],b[0]};
return ans;
}
if(adj[0].size()>=4) return true;
if(solve(0,-1)) return true;
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... |