Submission #290568

#TimeUsernameProblemLanguageResultExecution timeMemory
290568jairRSSplit the Attractions (IOI19_split)C++17
0 / 100
2088 ms288 KiB
#include "split.h"
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;

vvi adj;
vi degree;
int ga, gb, gc;

void dfs(int src, int prev = -1)
{
	if (gc > 0)
	{
		degree[src] = 3;
		gc--;
	}
	else if (gb > 0)
	{
		degree[src] = 2;
		gb--;
	}
	else if (ga > 0)
	{
		degree[src] = 1;
		ga--;
	}

	for (int a : adj[src])
	{
		if (a != prev)
		{
			dfs(a, src);
			break;
		}
	}
}

vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q)
{
	ga = a;
	gb = b;
	gc = c;
	degree = vi(n, 0);
	adj = vvi(n);
	for (int i = 0; i < p.size(); i++)
	{
		adj[p[i]].push_back(q[i]);
		adj[q[i]].push_back(p[i]);
		degree[p[i]]++;
		degree[q[i]]++;
	}
	bool loop = true;
	for (int i = 0; i < n; i++)
	{
		if (degree[i] == 1)
		{
			dfs(i);
			loop = false;
			break;
		}
	}
	if (loop)
		dfs(0);
	return degree;
}

Compilation message (stderr)

split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:45:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |  for (int i = 0; i < p.size(); i++)
      |                  ~~^~~~~~~~~~
#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...