# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1051218 | Trent | Thousands Islands (IOI22_islands) | C++17 | 20 ms | 6236 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "islands.h"
#include "bits/stdc++.h"
using namespace std;
#define forR(i, x) for(int i = 0; i < (x); ++i)
#define REP(i, a, b) for(int i = (a); i < (b); ++i)
#define all(x) x.begin(), x.end()
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<bool> vb;
struct edge{int t, i;};
vector<vector<edge>> adj;
vi nStk, eStk;
vb oStk, vis;
bool dfs(int c, vi& ans) {
// nStk is [0, c), eStk is [0, c]
if(oStk[c]) {
int sInd = -1;
forR(i, nStk.size()) if(nStk[i] == c) sInd = i;
forR(i, sInd) ans.push_back(eStk[i]);
REP(i, sInd, eStk.size()) ans.push_back(eStk[i]);
REP(i, sInd, eStk.size()) ans.push_back(eStk[i] ^ 1);
for(int i = (int) eStk.size() - 1; i >= sInd; --i) ans.push_back(eStk[i]);
for(int i = (int) eStk.size() - 1; i >= sInd; --i) ans.push_back(eStk[i] ^ 1);
for(int i = sInd - 1; i >= 0; --i) ans.push_back(eStk[i]);
return true;
}
if(!vis[c]) {
vis[c] = true;
oStk[c] = true;
nStk.push_back(c);
for(auto [t, i] : adj[c]) {
eStk.push_back(i);
if(dfs(t, ans)) return true;
eStk.pop_back();
}
nStk.pop_back();
oStk[c] = false;
}
return false;
}
std::variant<bool, std::vector<int>> find_journey(
int N, int M, std::vector<int> U, std::vector<int> V) {
adj.resize(N);
forR(i, M) {
adj[U[i]].push_back({V[i], i});
}
oStk.resize(N);
vis.resize(N);
vi ans;
bool done = dfs(0, ans);
if(done) return ans;
return false;
}
Compilation message (stderr)
# | 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... |