Pagini recente » Cod sursa (job #2737194) | Cod sursa (job #2571203) | Cod sursa (job #2998670) | Cod sursa (job #3250903) | Cod sursa (job #1116586)
#include <fstream>
#define nmax 100006
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct graf
{
int nod;
graf *next;
};
graf *L[nmax];
int viz[nmax];
int N, M, S;
void add (int from, int to)
{
graf *q = new graf;
q -> nod = to;
q -> next = L[from];
L[from] = q;
}
void read ()
{
int x, y, i;
fin >> N >> M >> S;
for (i = 1; i <= M; ++i)
{
fin >> x >> y;
add(x, y);
}
}
void BFS()
{
int c[nmax], u, p, i;
graf *q;
for (i = 1; i <= N; ++i)
viz[i] = -1;
viz[S] = 0;
u = 1;
p = 1;
i = 0;
c[1] = S;
while (p <= u)
{
i = viz[c[p]];
q = L[c[p]];
while (q != NULL)
{
if (viz[q -> nod] == -1)
{
++u;
c[u] = q -> nod;
viz[q -> nod] = i + 1;
}
q = q -> next;
}
++p;
}
}
int main()
{
read();
BFS();
for (int i = 1; i <= N; ++i)
fout << viz[i] << " ";
return 0;
}