Pagini recente » Cod sursa (job #2502071) | Cod sursa (job #601449) | Cod sursa (job #1361986) | Cod sursa (job #2860787) | Cod sursa (job #2689662)
#include <fstream>
#define NMAX 100001
struct Adiacenta
{
int nod;
Adiacenta *urm;
};
Adiacenta *Lista[NMAX];
int NrArce[NMAX];
int main()
{
std::ifstream f("bfs.in");
std::ofstream g("bfs.out");
int N, M, S, Q[NMAX], p = 1, u = 1, NrActualArce;
f >> N >> M >> S;
for(int i = 1; i <= M; i++)
{
int a, b;
f >> a >> b;
Adiacenta *aux = new Adiacenta;
aux->nod = b;
aux->urm = Lista[a];
Lista[a] = aux;
}
f.close();
Q[1] = S;
NrArce[S] = 1;
while(p <= u)
{
int NodActual = Q[p];
NrActualArce = NrArce[NodActual] + 1;
Adiacenta *vecin = Lista[NodActual];
while(vecin != NULL)
{
if(!NrArce[vecin->nod])
{
NrArce[vecin->nod] = NrActualArce;
Q[++u] = vecin->nod;
}
vecin = vecin->urm;
}
p++;
}
for(int i = 1; i <= N; i++)
if(NrArce[i] != 0 || i == S)
g << NrArce[i] - 1 << ' ';
else
g << -1 << ' ';
return 0;
}