Pagini recente » Cod sursa (job #1819431) | Cod sursa (job #880702) | Cod sursa (job #298595) | Cod sursa (job #45029) | Cod sursa (job #2854227)
#include <stdio.h>
#include <vector>
#include <queue>
#define MMAXX 1000000
#define NMAXX 100000
using namespace std;
vector <int> graf[NMAXX + 1];
queue <int> bfsQueue;
int v[NMAXX + 1];
void bfs( int node ) {
int qFront;
bfsQueue.push( node );
v[node] = 1;
while ( !bfsQueue.empty() ) {
qFront = bfsQueue.front();
for ( int neighbour : graf[qFront] ) {
if ( v[neighbour] == 0 ) {
bfsQueue.push( neighbour );
v[neighbour] = v[qFront] + 1;
}
}
bfsQueue.pop();
}
}
int main()
{
FILE *fin, *fout;
int n, m, s, i, a, b;
fin = fopen( "bfs.in", "r" );
fout = fopen( "bfs.out", "w" );
fscanf( fin, "%d%d%d", &n, &m, &s );
for ( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &a, &b );
graf[a].push_back( b );
}
bfs( s );
for ( i = 1; i <= n; i++ ) {
fprintf( fout, "%d ", v[i] - 1 );
}
fclose( fin );
fclose( fout );
return 0;
}