Pagini recente » Cod sursa (job #145542) | Cod sursa (job #2881178) | Cod sursa (job #676638) | Cod sursa (job #3162576) | Cod sursa (job #1217498)
#include <fstream>
#include <queue>
#include <vector>
#define IN "bfs.in"
#define OUT "bfs.out"
#define pb push_back
#define p push
const int MAX = 100014 ;
using namespace std;
ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;
queue < int > q ;
vector < int > gr [ MAX ] ;
int v [ MAX ] ;
void bfs ( int nod ) ;
int main( )
{
int n , m , s , x , y;
fin >> n >> m >> s ;
for ( register int i = 1 ; i <= m ; ++ i ){
fin >> x >> y ;
gr [ x ].pb ( y ) ;
}
bfs ( s ) ;
for ( register int i = 1 ; i <= n ; ++ i )
fout << v [ i ] - 1 << ' ' ;
return 0 ;
}
void bfs ( int nod ){
q.p ( nod ) ;
v [ nod ] = 1 ;
while ( not q.empty ( ) ){
int x = q.front ( ) ;
q.pop ( ) ;
for ( auto it : gr [ x ] )
if ( ! v [ it ] ){
q.p ( it ) ;
v [ it ] = v [ x ] + 1 ;
}
}
}