Pagini recente » Cod sursa (job #2935069) | Cod sursa (job #3204195) | Cod sursa (job #1172464) | Cod sursa (job #3039376) | Cod sursa (job #1890692)
#include <stdio.h>
long a[100001][64], d[100001], n, i, j, q;
void read()
{
FILE *f;
f = fopen("bfs.in", "r");
long x, y, m;
fscanf(f, "%d%d%d", &n, &m, &q);
for (i = 1; i <= n; i++)
d[i] = -1, a[i][0] = 0;
d[q] = 0;
for (i = 1; i <= m; i++)
{
fscanf(f, "%d%d", &x, &y);
if (x != y)
a[x][ ++a[x][0] ] = y;
}
fclose(f);
}
void solve()
{
long x[100001], c;
x[ x[0] = 1 ] = q;
for (i = 1; i <= x[0]; i++)
for (j = 1; j <= a[ x[i] ][0]; j++)
{
c = a[ x[i] ][j];
if (d[c] == -1)
{
d[c] = d[ x[i] ] + 1;
x[ ++x[0] ] = c;
}
}
}
void write()
{
FILE *f;
f = fopen("bfs.out", "w");
for (i = 1; i <= n; i++)
fprintf(f, "%d ", d[i]);
fclose(f);
}
int main()
{
read();
solve();
write();
return 0;
}