Submission #1047530

#TimeUsernameProblemLanguageResultExecution timeMemory
1047530Kel_MahmutSplit the Attractions (IOI19_split)C++14
0 / 100
40 ms12264 KiB
#include "split.h"
#include <bits/stdc++.h>
#define pb push_back
#define endl ("\n")
#define all(aa) aa.begin(), aa.end()
typedef long long ll;
using namespace std;


vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
	int m = q.size();

	vector<vector<int>> g(n);
	for(int i = 0; i < m; i++){
		g[q[i]].pb(p[i]);
		g[p[i]].pb(q[i]);
	}

	vector<int> vis(n);
	vector<int> color(n);
	int lim = 0;
	int cnt = 0;
	function<void(int, int)> dfs = [&](int u, int col){
		cnt++;
		color[u] = col;
		vis[u] = 1;
		if(cnt == lim) return;
		for(int v : g[u]){
			if(vis[v]) continue;
			dfs(v, col);
			if(cnt == lim) return;
		}
	};

	lim = a;
	cnt = 0;
	for(int i = 0; i < n; i++){
		if(!vis[i]){
			dfs(i, 1);
			break;
		}	
	}

	lim = b; cnt = 0;
	for(int i = 0; i < n; i++){
		if(!vis[i]){
			dfs(i, 2);
			break;
		}	
	}
	
	lim = c; cnt = 0;
	for(int i = 0; i < n; i++){
		if(!vis[i]){
			dfs(i, 3);
			break;
		}	
	}

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