Submission #1241162

#TimeUsernameProblemLanguageResultExecution timeMemory
1241162vtnooThousands Islands (IOI22_islands)C++20
8.40 / 100
19 ms4168 KiB
#pragma once

#include <variant>
#include <vector>
#include <map>

using namespace std;

using ll = long long;

const int MAXN=1005;
vector<int> dir[MAXN];
int visited[MAXN];
bool parent[MAXN];
bool ok=false;

void dfs(int u){
	if(ok)return;
	visited[u]=1;
	for(auto v:dir[u]){
		if(visited[v]==2)continue;
		if(visited[v]==1){
			int s=u, c=0;
			while(parent[s]!=0){
				c++;
				s=parent[s];
			}
			ok=true;
		}	
		parent[v]=u;
		dfs(v);
	}
	visited[u]=2;
}

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+=2){
		dir[U[i]].push_back(V[i]);
	}
	//~ if(N==2){
		//~ vector<vector<int>> ini(N);
		//~ for(int i=0; i<M; i++){
			//~ ini[U[i]].push_back(i);
		//~ }
		//~ if(ini[0].size()>=2&&ini[1].size()){
			//~ int a=ini[0][0], b=ini[0][1];
			//~ int c=ini[1][0];
			//~ return vector<int>{a,c,b,a,c,b};
		//~ }else{
			//~ return false;
		//~ }
	//~ }else{
		//~ map<pair<int,int>, int> mp;
		//~ for(int i=0;i<M;i++){
			//~ mp[{U[i], V[i]}]=i;
		//~ }
		//~ int a=mp[{0,1}], b=mp[{1,0}], c=mp[{0,2}], d=mp[{2,1}];
		//~ return vector<int>{a,b,c,d,a,b,d,c};
	//~ }
	dfs(0);
	return ok;
}

Compilation message (stderr)

islands.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...