Pagini recente » Cod sursa (job #2342792) | Cod sursa (job #680683) | Cod sursa (job #343633) | Cod sursa (job #465809) | Cod sursa (job #1227442)
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
const int MAX=100007;
#define pb push_back
using namespace std;
queue <int> q;
vector <int> gr[MAX];
int d[MAX] ;
int main()
{
freopen ("bfs.in" , "r" , stdin );
freopen ("bfs.out" , "w" , stdout );
int n , m , s ;
scanf ("%d %d %d" , &n ,&m , &s );
for ( int i = 1 ; i <= m ; ++i ){
int x , y ;
scanf ("%d %d" , &x , &y );
gr[ x ].pb( y ) ;
}
q.push(s);
d [ s ] = 1 ;
while ( not q.empty ( ) ){
int w=q.front();
q.pop();
for ( auto x : gr[w] )
if ( d[x] == 0 ){
d[x]=d[w]+1;
q.push(x);
}
}
for ( int i = 1 ; i <= n ; ++i )
printf ("%d " , ( d[i] == 0 )?( -1 ) : ( d [ i ] - 1 ) );
return 0;
}