Pagini recente » Cod sursa (job #2837744) | Cod sursa (job #1075624) | Cod sursa (job #1633128) | Cod sursa (job #2648692) | Cod sursa (job #3138879)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("bfs.in");
ofstream cout ("bfs.out");
vector < vector <int> > adiacenta;
vector <int> distante;
void Parcurgere (const int nod_actual)
{
for (auto nod_vecin : adiacenta[nod_actual])
if (distante[nod_vecin] == -1)
distante[nod_vecin] = distante[nod_actual] + 1;
for (auto nod_vecin : adiacenta[nod_actual])
if (distante[nod_vecin] == distante[nod_actual] + 1)
Parcurgere(nod_vecin);
}
int main ()
{
int noduri , muchii , sursa;
cin >> noduri >> muchii >> sursa;
adiacenta.resize(noduri + 1);
distante.insert(distante.begin() , noduri + 1 , -1);
distante[sursa] = 0;
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;
}