제출 #955724

#제출 시각아이디문제언어결과실행 시간메모리
955724n1k수천개의 섬 (IOI22_islands)C++17
10.15 / 100
49 ms7772 KiB
#include "islands.h"

#include <bits/stdc++.h>

using namespace std;

vector<vector<array<int, 2>>> g;
vector<int> color, par;

map<int, int> cache;

int x, y;

int dfs(int u, int p){
	if(cache.count(u))
		return cache[u];

	par[u] = p;
	color[u]= 1;

	int count = 0;
	for(auto [v, e]:g[u]){
		if(color[v]==1){
			count++;
		}else{
			count += dfs(v, u);
		}
	}

	color[u] = 2;

	return cache[u] = min(2, count);
}

std::variant<bool, std::vector<int>> find_journey(int N, int M, std::vector<int> U, std::vector<int> V) {
	g.assign(N, {});
	color.assign(N, {});
	par.assign(N, {});

	for(int i=0; i<M; i++){
		g[U[i]].push_back({V[i], i});
	}

	return dfs(0, -1) >= 2;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...