Pagini recente » Cod sursa (job #1716256) | Cod sursa (job #1265071) | Cod sursa (job #2564476) | Cod sursa (job #2191269) | Cod sursa (job #634612)
Cod sursa(job #634612)
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
#define inf 1000000000
#define NM 100005
vector <int> G[NM];
int N, M, coada[NM], C[NM];
int main()
{
int s, st = 0, dr = -1;
freopen ("bfs.in", "r", stdin);
freopen ("bfs.out", "w", stdout);
scanf ("%d %d %d", &N, &M, &s);
for (int i = 1; i <= M; ++i)
{
int a, b;
scanf ("%d %d", &a, &b);
G[a].push_back(b);
//G[b].push_back(a);
}
for (int i = 1; i <= N; ++i) C[i] = inf;
coada[++dr] = s;
C[s] = 0;
while (st <= dr)
{
int nod = coada[st];
++st;
for (int i = 0; i < G[nod].size(); ++i)
{
int nnod = G[nod][i];
if (C[nnod] == inf)
{
C[nnod] = C[nod] + 1;
coada[++dr] = nnod;
}
}
}
for (int i = 1; i <= N; ++i)
if (C[i] == inf) printf ("-1 ");
else printf ("%d ", C[i]);
return 0;
}