Submission #1240448

#TimeUsernameProblemLanguageResultExecution timeMemory
1240448Muhammad_Aneeq기지국 (IOI20_stations)C++20
100 / 100
302 ms568 KiB
#include "stations.h"
#include <vector>
#include <iostream>
using namespace std;
int const N=1e3+10;
vector<int>nei[N]={};
vector<int>ret;
int tm=0;
void dfs(int u,int p=-1,int dp=0)
{
	if (!dp)
		ret[u]=tm++;
	for (auto i:nei[u])
	{
		if (i==p) continue;
			dfs(i,u,1-dp);
	}
	if (dp)
		ret[u]=tm++;
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) 
{
	tm=0;
	for (int i=0;i<n;i++)
		nei[i]={};
	ret={};
	for (int i=0;i+1<n;i++)
	{
		nei[u[i]].push_back(v[i]);
		nei[v[i]].push_back(u[i]);
	}
	ret.resize(n);
	dfs(0);
	return ret;
}

int find_next_station(int s, int t, vector<int> c) 
{
	if (c.size()==1)
		return c[0];
	if (s>c.back())// its ending time
	{
		if (t>s)
			return c[0];
		int ans=c[0];
		for (int j=0;j<c.size();j++)
		{
			if (t>=c[j])
				ans=c[j];
		}
		return ans;
	}
	if (t<s)
		return c.back();
	//starting time
	int ans=c.back();
	for (int j=c.size()-1;j>=0;j--)
	{
		if (t<=c[j])
			ans=c[j];
	}
	return ans;
}
#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...