제출 #1327100

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

vector <int> adiacenta[1000] , inlocuitor;

void Parcurgere (const int nod , const int sursa , int& moment , const int adancime)
{
	if (!(adancime & 1))
		{ inlocuitor[nod] = moment; }
	
	moment++;
	for (auto& vecin : adiacenta[nod]) {
		if (vecin != sursa)
			{ Parcurgere(vecin , nod , moment , adancime + 1); }
	}

	if (adancime & 1)
		{ inlocuitor[nod] = moment; }

	moment++;
}

vector <int> label (int numar_noduri , int limita , vector <int> capat_1 , vector <int> capat_2)
{
	for (int indice = 0 ; indice < (int)capat_1.size() ; indice++) {
		adiacenta[capat_1[indice]].push_back(capat_2[indice]);
		adiacenta[capat_2[indice]].push_back(capat_1[indice]);
	}	

	int moment = 0;
	inlocuitor.resize(numar_noduri);
	Parcurgere(0 , -1 , moment , 0);
	
	for (int nod = 0 ; nod < numar_noduri ; nod++)
		{ adiacenta[nod].clear(); }
		
	return inlocuitor;
}

int find_next_station (int inceput , int sfarsit , vector <int> vecini)
{
	if (vecini.size() == 1)
		{ return vecini[0]; }

	if (inceput == 0)
	{
		int indice = 0;
		while (vecini[indice] < sfarsit)
			{ indice++; }

		return vecini[indice];
	}

	if (inceput > vecini[0]) // inceput = out[inceput]
	{
		if (sfarsit > inceput || sfarsit < vecini[1])
			{ return vecini[0]; }

		int indice = 1;
		while (indice + 1 < (int)vecini.size() && vecini[indice + 1] <= sfarsit)
			{ indice++; }
			
		return vecini[indice];
	}
	
	// inceput = in[inceput]
	{
		if (sfarsit < inceput || sfarsit > vecini[vecini.size() - 2])
			{ return vecini.back(); }

		int indice = 0;
		while (vecini[indice] < sfarsit)
			{ 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...