Submission #1327728

#TimeUsernameProblemLanguageResultExecution timeMemory
1327728nicolo_010Split the Attractions (IOI19_split)C++20
0 / 100
664 ms1114112 KiB
#include "split.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;

vector<vector<int>> adj;

vector<int> euler;

void dfs(int u, int p=-1) {
	euler.push_back(u);
	for (auto v : adj[u]) {
		if (v==p) continue;
		dfs(v, u);
	}
}

vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
	adj.assign(n, {});
	euler.clear();
	int m = p.size();
	for (int i=0; i<m; i++) {
		int u = p[i];
		int v = q[i];
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
	int r=0;
	for (int i=0; i<n; i++) {
		if (adj[i].size()==1) r = i;
	}
	dfs(r);
	vector<int> res(n);
	for (int i=0; i<a; i++) {
		res[euler[i]] = 1;
	}
	for (int i=a; i<a+b; i++) {
		res[euler[i]] = 2;
	}
	for (int i=a+b; i<n; i++) {
		res[euler[i]] = 3;
	}
	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...