Submission #418309

#TimeUsernameProblemLanguageResultExecution timeMemory
418309AderfishSplit the Attractions (IOI19_split)C++14
11 / 100
92 ms12228 KiB
#include "split.h"

using namespace std;


vector<bool> visited;
vector<vector<int>> adj_list;
int left;

void dfs_sub_2(int i){
	if(visited[i]) return;
	visited[i] = true;
	left--;

	for(int j : adj_list[i]){
		if(left > 0){
			dfs_sub_2(j);
		}
	}
}


vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
	vector<int> res(n, 0);

	adj_list.assign(n, vector<int>());
	for(int i = 0; i < (int)p.size(); i++){
		int a = p[i];
		int b = q[i];
		adj_list[a].push_back(b);
		adj_list[b].push_back(a);
	}

	if(a == 1){
		visited.assign(n, false);
		left = b;
		dfs_sub_2(0);

		for(int i = 0; i < n; i++){
			if(visited[i]){
				res[i] = 2;
			}
			else res[i] = 3;
		}

		for(int i = 0; i < n; i++){
			if(res[i] == 3){
				res[i] = 1;
				break;
			}
		}
	}

	return res;
}
#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...