제출 #1282854

#제출 시각아이디문제언어결과실행 시간메모리
1282854SSKMF기지국 (IOI20_stations)C++20
10 / 100
399 ms524 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

inline void Parcurgere (const int nod , const int sursa , int& moment , vector <int> adiacenta[] , vector <int>& rezultat)
{
	const int inceput = moment++;
	for (auto& vecin : adiacenta[nod]) {
		if (vecin != sursa)
			{ Parcurgere(vecin , nod , moment , adiacenta , rezultat); }
	}

	const int sfarsit = moment;
	rezultat[nod] = 1000 * inceput + sfarsit;
}

vector <int> label (int numar_noduri , int limita , vector <int> capat_1 , vector <int> capat_2)
{
	vector <int> adiacenta[1000];
	int moment = 0;

	vector <int> rezultat(numar_noduri);
	for (int indice = 0 ; indice < numar_noduri - 1 ; indice++)
	{
		adiacenta[capat_1[indice]].push_back(capat_2[indice]);
		adiacenta[capat_2[indice]].push_back(capat_1[indice]);
	}

	Parcurgere(0 , -1 , moment , adiacenta , rezultat);

	return rezultat;
}

int find_next_station (int sursa , int destinatie , vector <int> vecini)
{
	if (!(sursa / 1000 < destinatie / 1000 && destinatie % 1000 <= sursa % 1000))
		{ return vecini[0]; }

	int indice = 0;
	while (indice + 1 < (int)vecini.size() && vecini[indice + 1] / 1000 <= destinatie / 1000)
		{ indice++; }

	return vecini[indice];
}
#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...