| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 628554 | Sorting | Thousands Islands (IOI22_islands) | C++17 | 46 ms | 5152 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "islands.h"
#include <variant>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
std::variant<bool, std::vector<int>> find_journey(
int n, int m, std::vector<int> u, std::vector<int> v) {
if(n == 2){
vector<int> cnt[2]{};
for(int i = 0; i < u.size();++i){
cnt[u[i]].push_back(i);
}
if(cnt[0].size() >= 2 && cnt[1].size() >= 1){
return vector<int>{cnt[0][0], cnt[1][0], cnt[0][1], cnt[0][0], cnt[1][0], cnt[0][1]};
}
return false;
}
vector<vector<pair<int, int>>> adj(n);
for(int i = 0; i < m; ++i)
adj[u[i]].push_back({v[i], i});
vector<int> ans;
int x = 0, par = -1;
while(true){
if(adj[x].size() != 1 + (x != 0)){
if(adj[x].size() < 1 + (x != 0)){
return false;
}
int len = ans.size();
pair<int, int> to_1{-1, -1}, to_2{-1, -1};
for(auto p: adj[x]){
if(p.first == par){
continue;
}
if(to_1.first == -1)
to_1 = p;
else
to_2 = p;
}
if(to_1.first == to_2.first){
pair<int, int> back_1{-1, -1}, back_2{-1, -1};
for(auto p: adj[to_1.first]){
if(p.first != x){
continue;
}
if(back_1.first == -1)
back_1 = p;
else
back_2 = p;
}
ans.push_back(to_1.second);
ans.push_back(back_1.second);
ans.push_back(to_2.second);
ans.push_back(to_1.second);
ans.push_back(back_1.second);
ans.push_back(to_2.second);
}
else{
pair<int, int> back_1{-1, -1}, back_2{-1, -1};
for(auto p: adj[to_1.first]){
if(p.first != x)
continue;
back_1 = p;
break;
}
for(auto p: adj[to_2.first]){
if(p.first != x)
continue;
back_2 = p;
break;
}
ans.push_back(to_1.second);
ans.push_back(back_1.second);
ans.push_back(to_2.second);
ans.push_back(back_2.second);
ans.push_back(back_1.second);
ans.push_back(to_1.second);
ans.push_back(back_2.second);
ans.push_back(to_2.second);
}
for(int i = len - 1; i >= 0; --i)
ans.push_back(ans[i]);
return ans;
}
for(auto p: adj[x]){
int to = p.first;
int idx = p.second;
if(to == par){
par = -1;
continue;
}
par = x;
x = to;
ans.push_back(idx);
break;
}
}
}컴파일 시 표준 에러 (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... | ||||
