#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 > vecini[0]) // inceput = out[inceput]
{
if (sfarsit > inceput || sfarsit <= vecini[0])
{ return vecini[0]; }
int indice = 0;
while (indice + 1 < (int)vecini.size() && vecini[indice + 1] <= sfarsit)
{ indice++; }
return vecini[indice];
}
// inceput = in[inceput]
{
if (sfarsit < inceput || sfarsit >= vecini.back())
{ return vecini.back(); }
int indice = 0;
while (indice + 1 < (int)vecini.size() && vecini[indice + 1] <= sfarsit)
{ indice++; }
return vecini[indice];
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |