Submission #1240289

#TimeUsernameProblemLanguageResultExecution timeMemory
1240289MuhammadSaramStations (IOI20_stations)C++20
76 / 100
310 ms600 KiB
#include "stations.h"
#include <bits/stdc++.h>

using namespace std;

const int M = 1e3;

vector<int> nei[M], ans;
int st[M], en[M], t;

void dfs(int u,int p=-1,bool a=0)
{
	st[u]=t++;
	for (int i:nei[u])
		if (i!=p)
			dfs(i,u,!a);
	ans[u]=en[u]=t++;
	if (!a)
		ans[u]=st[u];
}

vector<int> label(int n, int k, vector<int> u, vector<int> v)
{
	t=0;
	for (int i=0;i<n;i++) nei[i].clear();
	ans=vector<int>(n);
	for (int i=0;i<n-1;i++)
		nei[u[i]].push_back(v[i]), nei[v[i]].push_back(u[i]);
	dfs(0);
	return ans;
}

int find_next_station(int s, int t, vector<int> c)
{
	int m=c.size();
	if (m==1) return c[0]; 
	if (c[0]>s)
	{
		if (!s)
		{
			for (int i:c)
				if (t<=i)
					return i;
		}
		if (t<=c[m-2] && t>s)
		{
			for (int i:c)
				if (t<=i)
					return i;
		}
		else
			return c[m-1];
	}
	if (t>=c[1] && t<s)
	{
		for (int i=m-1;i>0;i--)
			if (t>=c[i])
				return c[i];
	}
	return c[0];
}
#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...