Submission #1166844

#TimeUsernameProblemLanguageResultExecution timeMemory
1166844MateiKing80Stations (IOI20_stations)C++20
100 / 100
300 ms568 KiB
#include <bits/stdc++.h>

using namespace std;

vector<int> g[1002];
vector<int> color;
bool used[1002];
int ptr;

void dfs(int v, bool markFirst) 
{
	used[v] = true;
	if (markFirst) 
		color[v] = ptr ++;
	for (int x : g[v])
		if (!used[x]) 
			dfs(x, !markFirst);
	if (!markFirst) 
		color[v] = ptr ++;
}

vector<int> label(int n, int k, vector<int> u, vector<int> v) 
{
	for (int i = 0; i < n; i ++) 
		g[i].clear();
	for (int i = 0; i < u.size(); i ++) 
	{
		g[u[i]].push_back(v[i]);
		g[v[i]].push_back(u[i]);
	}
	ptr = 0;
	color.resize(n, -1);
	memset(used, false, sizeof(used));
	dfs(0, true);
	return color;
}

int find_next_station(int s, int t, vector<int> st) 
{
	sort(st.begin(), st.end());
	if (s < st[0]) 
	{
		if (t < s) 
			return st.back();
		for (int x : st)
			if (t <= x)
				return x;
		return st.back();
	} 
	else 
	{
		reverse(st.begin(), st.end());
		if (t > s)
			return st.back();
		for (auto x : st)
			if (x <= t) 
				return x;
		return st.back();
	}
}
#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...