Pagini recente » Cod sursa (job #7326) | Cod sursa (job #2718447) | Cod sursa (job #1802057) | Cod sursa (job #3283084) | Cod sursa (job #228316)
Cod sursa(job #228316)
#include <cstdio>
#include <vector>
const int maxn = 100001;
FILE *in = fopen("bfs.in","r"), *out = fopen("bfs.out","w");
int n, m, s;
std::vector<int> a[maxn];
int v[maxn], c[maxn];
void read()
{
fscanf(in, "%d %d %d", &n, &m, &s);
int x, y;
for ( int i = 0; i < m; ++i )
{
fscanf(in, "%d %d", &x, &y);
a[x].push_back(y);
}
}
void bfs()
{
for ( int i = 1; i <= n; ++i )
v[i] = -1;
v[s] = 0;
int p = 0, u = 0;
c[p] = s;
while ( p <= u )
{
int x = c[p++];
for ( int i = 0; i < a[x].size(); ++i )
if ( v[ a[x][i] ] == -1 )
{
v[ a[x][i] ] = v[x] + 1;
c[++u] = a[x][i];
}
}
for ( int i = 1; i <= n; ++i )
fprintf(out, "%d ", v[i]);
}
int main()
{
read();
bfs();
return 0;
}