Pagini recente » Cod sursa (job #1415335) | Cod sursa (job #833965) | Cod sursa (job #2779055) | Cod sursa (job #269179) | Cod sursa (job #2537608)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int x1, y1, x, y, st, dr, nr, coada[100002], i, viz[100002], n, ok, S, m;
struct lista
{
int nod;
lista *urm;
}*g[100002], *p;
int main ()
{
fin >> n >> m >> S;
for (i = 1; i <= m; i ++)
{
fin >> x >> y;
p = new lista;
p -> nod = y;
p -> urm = g[x];
g[x] = p;
}
for (i = 1; i <= n; i ++) viz[i] = -1;
st = dr = 1;
coada[st] = S;
viz[S] = 0;
while (st <= dr)
{
p = g[coada[st]];
while (p)
{
if (viz[p -> nod] == -1)
{
viz[p -> nod] = viz[coada[st]] + 1;
dr ++;
coada[dr] = p -> nod;
}
p = p -> urm;
}
st ++;
}
for(i = 1; i <= n; i ++)
fout << viz[i] << " ";
}