이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "islands.h"
#include <variant>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using ii = pair<int, int>;
variant<bool, vi> find_journey(int n, int m, vi U, vi V) {
vi InDeg(n, 0), OutDeg(n, 0);
vector<vector<ii> > L(n);
for(int i = 0; i < m; ++i) {
L[U[i]].push_back({V[i], i});
++OutDeg[U[i]];
++InDeg[V[i]];
}
bool ok = false;
vi viz(n, 0);
stack<ii> S;
vi Re;
function<void(int, int, int)> dfs = [&](int u, int p, int parc) {
if(ok) return;
if(viz[u] == 2) return;
if(viz[u] == 1) {
vector<ii> Cic;
while(!S.empty() && S.top().first != u) {
Cic.push_back(S.top());
S.pop();
}
reverse(Cic.begin(), Cic.end());
Cic.push_back({u, parc});
vector<ii> Rest;
while(!S.empty()) {
Rest.push_back(S.top());
S.pop();
}
vi Sol;
reverse(Rest.begin(), Rest.end());
for(auto it : Rest)
Sol.push_back(it.second);
for(auto it : Cic)
Sol.push_back(it.second);
for(auto it : Cic)
Sol.push_back(it.second ^ 1);
reverse(Cic.begin(), Cic.end());
for(auto it : Cic)
Sol.push_back(it.second);
for(auto it : Cic)
Sol.push_back(it.second ^ 1);
reverse(Rest.begin(), Rest.end());
for(auto it : Rest)
Sol.push_back(it.second);
Re = Sol;
ok = 1;
return;
}
if(parc != -1)
S.push({u, parc});
viz[u] = 1;
int nrf = 0;
vector<ii> Fii;
for(auto [it, nrc] : L[u]) {
dfs(it, u, nrc);
}
viz[u] = 2;
};
dfs(0, -1, -1);
if(ok && !Re.empty()) return Re;
return ok;
}
컴파일 시 표준 에러 (stderr) 메시지
islands.cpp: In lambda function:
islands.cpp:63:13: warning: unused variable 'nrf' [-Wunused-variable]
63 | int nrf = 0;
| ^~~
# | 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... |