Pagini recente » Cod sursa (job #1144607) | Cod sursa (job #407923) | Cod sursa (job #574283) | Cod sursa (job #2964211) | Cod sursa (job #1779900)
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int NMAX = 100000;
queue<int>q;
vector<int>v[NMAX+5];
int d[NMAX+5];
void bfs () {
int nod, i;
while ( !q.empty() ) {
nod = q.front();
q.pop();
for ( i = 0 ; i < v[nod].size() ; ++ i ) {
if ( d[v[nod][i]] == -1 ) {
d[v[nod][i]] = d[nod] + 1;
q.push ( v[nod][i] );
}
}
}
}
void init ( int n ) {
int i;
for ( i = 1 ; i <= n ; ++ i )
d[i] = -1;
}
int main() {
freopen ( "bfs.in", "r", stdin );
freopen ( "bfs.out", "w", stdout );
int n, m, s, x, y, i;
scanf ( "%d%d%d", &n, &m, &s );
for ( i = 1 ; i <= m ; ++ i ) {
scanf ( "%d%d", &x, &y );
v[x].push_back ( y );
}
q.push ( s );
init ( n );
d[s] = 0;
bfs();
for ( i = 1 ; i <= n ; ++ i )
printf ( "%d ", d[i] );
return 0;
}