제출 #1326986

#제출 시각아이디문제언어결과실행 시간메모리
1326986SSKMF기지국 (IOI20_stations)C++20
0 / 100
394 ms572 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 > 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 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...