Pagini recente » Cod sursa (job #2774008) | Cod sursa (job #1881155) | Cod sursa (job #2819476) | Cod sursa (job #1370475) | Cod sursa (job #2167125)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
int x;
nod *urm;
};
typedef nod* lista;
void ins(lista &L, int x);
void BFS();
int n, m, start, dist[100005], uz[100005];
lista L[100005];
int main()
{
int i, x, y;
fin >> n >> m >> start;
for (i = 1; i <= m; i++)
{
fin >> x >> y;
ins(L[x], y);
}
BFS();
for (i = 1; i <= n; i++)
{
if (dist[i])
fout << dist[i] << ' ';
else
{
if (i != start)
fout << -1 << ' ';
else fout << 0 << ' ';
}
}
fout << '\n';
return 0;
}
void ins(lista &L, int x)
{
nod *p = new nod;
p->x = x;
p->urm = L;
L = p;
}
void BFS()
{
int in, sf, aux, C[100005];
nod*p;
in = sf = 0;
C[sf++] = start;
uz[start] = 1;
while (in < sf)
{
aux = C[in++];
p = L[aux];
while (p)
{
if (!uz[p->x])
{
uz[p->x] = 1;
C[sf++] = p->x;
dist[p->x] = dist[aux] + 1;
}
p = p->urm;
}
}
}