# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1183533 | PagodePaiva | 수천개의 섬 (IOI22_islands) | C++20 | 0 ms | 0 KiB |
#include "islands.h"
#include<bits/stdc++.h>
#include <variant>
#include <vector>
using namespace std;
const int N = 1010;
const int M = 200010;
vector <int> g[N];
int mark[M];
int mark_ver[N];
bool res = false;
void dfs(int v, int p, int idx){
mark_ver[v] = 1;
mark[idx] = 1;
for(auto [x, i] : g[v]){
if(mark_ver[x] == 1 and mark[i] == 0){
res = true;
return;
}
if(x == p)
continue;
dfs(x, v, i);
}
return;
}
std::variant<bool, std::vector<int>> find_journey(
int N, int M, std::vector<int> U, std::vector<int> V) {
for(int i = 0;i < M;i++){
g[U[i]].push_back({V[i], i/2});
}
vector <int> ans = {};
if(g[0].size() >= 2){
return ans;
}
dfs(0, 0, M-1);
if(res) return ans;
return res;
}