Pagini recente » Cod sursa (job #187431) | Cod sursa (job #2258364) | Cod sursa (job #750366) | Cod sursa (job #332372) | Cod sursa (job #2789843)
#include <fstream>
#include <vector>
#define NMAX 100009
std::vector<int> Adiacenta[NMAX];
int main()
{
std::ifstream f("bfs.in");
std::ofstream g("bfs.out");
int N, M, S;
f >> N >> M >> S;
for (int x, y, i = 0; i < M; ++i)
{
f >> x >> y;
Adiacenta[x].push_back(y);
}
int nrArce[NMAX];
int coada[NMAX], st = 1, dr = 1;
for (int i = 1; i <= N; ++i)
nrArce[i] = -1;
nrArce[S] = 0;
coada[st] = S;
while (st <= dr)
{
int curent = coada[st++];
for (auto it = Adiacenta[curent].begin(); it != Adiacenta[curent].end(); ++it)
if(nrArce[*it] == -1)
{
coada[++dr] = *it;
nrArce[*it] = nrArce[curent] + 1;
}
}
for(int i = 1; i <= N; ++i)
g << nrArce[i] << ' ';
return 0;
}