Pagini recente » Cod sursa (job #597579) | Cod sursa (job #2169336) | Cod sursa (job #705972) | Cod sursa (job #1249466) | Cod sursa (job #2854357)
#include <stdio.h>
#include <vector>
#include <queue>
#define N 100000
std::vector <int> g[N + 1];
int dis[N + 1];
int n;
std::queue <int> coada;
void bfs( int node ) {
coada.push( node );
do {
node = coada.front();
coada.pop();
for ( const int& vecin : g[node] ) {
if ( dis[vecin] == -1 ) {
dis[vecin] = dis[node] + 1;
coada.push( vecin );
}
}
} while ( !coada.empty() );
}
inline void addMuchie( int a, int b ) {
g[a].push_back( b );
}
int main() {
FILE *fin, *fout;
int m, a, b, start;
fin = fopen( "bfs.in", "r" );
fscanf( fin, "%d%d%d", &n, &m, &start );
for ( int i = 0; i < m; i ++ ) {
fscanf( fin, "%d%d", &a, &b );
addMuchie( a, b );
}
fclose( fin );
for ( int i = 1; i <= n; i ++ )
dis[i] = -1;
dis[start] = 0;
bfs( start );
fout = fopen( "bfs.out", "w" );
fprintf( fout, "%d", dis[1] );
for ( int i = 2; i <= n; i ++ )
fprintf( fout, " %d", dis[i] );
fprintf( fout, "\n" );
fclose( fout );
return 0;
}