Pagini recente » Runda 2 preONI 2007 | Cod sursa (job #228234) | Cod sursa (job #2817798) | Cod sursa (job #2615692) | Cod sursa (job #228240)
Cod sursa(job #228240)
#include <stdio.h>
#include <vector>
using namespace std;
#define NMax 100005
int N, M, S, d[NMax], q[NMax];
vector<int> G[NMax];
void BF(int sursa)
{
int i, qr, ql, sz, x;
for (i = 1; i <= N; i++)
d[i] = -1;
d[sursa] = 0;
for (q[qr=ql=0] = sursa; qr <= ql; ++qr)
for (sz = G[q[qr]].size(), i = 0; i < sz; ++i)
if (d[x = G[q[qr]][i]] == -1)
q[++ql] = x,
d[x] = d[q[qr]] + 1;
}
int main()
{
int i, j;
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d", &N, &M, &S);
for (; M; --M)
{
scanf("%d %d", &i, &j);
G[i].push_back(j);
}
BF(S);
for (i = 1; i <= N; ++i)
printf("%d ", d[i]);
printf("\n");
return 0;
}