Pagini recente » Cod sursa (job #1844321) | Cod sursa (job #2640988) | Cod sursa (job #1060454) | Cod sursa (job #753495) | Cod sursa (job #3138883)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
vector < vector <int> > adiacenta;
vector <int> distante;
void Parcurgere (const int inceput)
{
queue <int> noduri;
noduri.push(inceput);
distante[inceput] = 0;
while (!noduri.empty())
{
const int nod_actual = noduri.front();
for (auto nod_vecin : adiacenta[nod_actual])
if (distante[nod_vecin] == -1) {
distante[nod_vecin] = distante[nod_actual] + 1;
noduri.push(nod_vecin);
}
noduri.pop();
}
}
int main ()
{
int noduri , muchii , sursa;
cin >> noduri >> muchii >> sursa;
adiacenta.resize(noduri + 1);
distante.insert(distante.begin() , noduri + 1 , -1);
for (int indice = 1 , nod[2] ; indice <= muchii ; indice++)
cin >> nod[0] >> nod[1] , adiacenta[nod[0]].push_back(nod[1]);
Parcurgere(sursa);
for (int indice = 1 ; indice <= noduri ; indice++)
cout << distante[indice] << ' ';
cout.close(); cin.close();
return 0;
}