#include "islands.h"
#include <bits/stdc++.h>
using namespace std;
variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> V) {
int a=-1, b=-1, c=-1, d=-1;
for(int i=0; i<M; i+=2) {
if(U[i]==0) {
if(a<0) a=i, c=i+1;
else if(b<0) b=i, d=i+1;
}
if(V[i]==0) {
if(a<0) a=i+1, c=i;
else if(b<0) b=i+1, d=i;
}
}
if(b>=0) {
vector<int> ret;
ret.push_back(a), ret.push_back(c), ret.push_back(b), ret.push_back(d);
ret.push_back(c), ret.push_back(a), ret.push_back(d), ret.push_back(b);
return ret;
}
int prv[1010], pw[1010];
for(int i=0; i<N; i++) prv[i]=-1, pw[i]=-1;
vector<pair<int, int>> adj[1010];
queue<int> q;
for(int i=0; i<M; i++) adj[U[i]].push_back({V[i], i});
prv[0]=0, q.push(0);
while(!q.empty()) {
int curr=q.front(); q.pop();
for(auto [next, k]:adj[curr]) if(prv[next]<0) prv[next]=curr, pw[next]=k, q.push(next);
}
auto f=[](int a) {return (a&1)?(a-1):(a+1);};
for(int i=0; i<N; i++) if(prv[i]>=0 && adj[i].size()>=3) {
vector<int> ret;
for(int j=i; j; j=prv[j]) ret.push_back(pw[j]);
reverse(ret.begin(), ret.end());
for(auto [next, k]:adj[i]) if(f(k)!=pw[i]) ret.push_back(k), ret.push_back(f(k));
for(auto [next, k]:adj[i]) if(f(k)!=pw[i]) ret.push_back(f(k)), ret.push_back(k);
for(int j=i; j; j=prv[j]) ret.push_back(pw[j]);
return ret;
}
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... |