Pagini recente » Cod sursa (job #1785424) | Cod sursa (job #1898128) | Cod sursa (job #3171828) | Cod sursa (job #334911) | Cod sursa (job #2029787)
#include <stdio.h>
#include <vector>
#include <queue>
#define nmax 100001
using namespace std;
vector <int> v[nmax];
queue <int> coada;
int drum[nmax];
void bfs( int nod ) {
coada.push( nod );
drum[nod] = 1;
while( coada.empty() == 0 ) {
for ( int i = 0; i < v[ coada.front() ].size(); i++ ) {
if ( drum[ v[ coada.front() ][i] ] == 0 ) {
drum[ v[ coada.front() ][i] ] = drum[ coada.front() ] + 1;
coada.push( v[ coada.front() ][i] );
}
}
coada.pop();
}
}
int main() {
int n, m, nod, i, x, y;
FILE *fin, *fout;
fin = fopen( "bfs.in", "r" );
fscanf( fin, "%d%d%d", &n, &m, &nod );
for ( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &x, &y );
v[x].push_back(y);
}
fclose( fin );
bfs( nod );
fout = fopen( "bfs.out", "w" );
for ( i = 1; i <= n; i++ )
fprintf( fout, "%d ", drum[i] - 1 );
fclose( fout );
return 0;
}