이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "islands.h"
#include <bits/stdc++.h>
#include <variant>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
using ll = int;
using vi = vector<ll>;
using vii = vector<vi>;
using pii = std::pair<ll,ll>;
#define rep(i,j,k) for(ll i=ll(j); i<ll(k); i++)
#define REP(i,j,k) for(ll i=ll(j); i<=ll(k); i++)
#define per(i,j,k) for(ll i=ll(j); i>=ll(k); i--)
#define all(a) a.begin(),a.end()
#define pb emplace_back
#define ln "\n"
std::variant<bool, std::vector<int>> find_journey(int N, int M, std::vector<int> U, std::vector<int> V) {
vii edge(N), index(N);
rep(i,0,M){
edge[U[i]].pb(V[i]);
index[U[i]].pb(i);
}
if(edge[0].size() == 0) return false;
vi ans;
bool flag = false;
std::function<void(ll)> dfs = [&](ll now){
if((ans.empty() && edge[now].size() >= 2) || edge[now].size() >= 3){
flag = true;
vi ind;
rep(i,0,edge[now].size()){
if(ans.empty() || (ans.back()^1) != index[now][i]) ind.pb(index[now][i]);
}
ll len = ans.size();
rep(i,0,2){
ans.pb(ind[i]);
ans.pb(ind[i]^1);
}
rep(i,0,2){
ans.pb(ind[i]^1);
ans.pb(ind[i]);
}
per(i,len-1,0) ans.pb(ans[i]);
return;
}
rep(i,0,edge[now].size()){
if(ans.empty() || index[now][i] != (ans.back()^1)){
ans.pb(index[now][i]);
dfs(edge[now][i]);
}
}
return;
};
dfs(0);
if(flag) return ans;
else 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... |