Pagini recente » Cod sursa (job #389847) | Cod sursa (job #3280518) | Cod sursa (job #1207659) | Cod sursa (job #554401) | Cod sursa (job #2796912)
// Mihai Priboi
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
#define MAXN 100000
vector<int> muchii[MAXN + 1];
int noduri[MAXN + 1];
queue<int> myQueue;
int main() {
FILE *fin, *fout;
int n, m, i, x, y, s, point;
fin = fopen( "bfs.in", "r" );
fscanf( fin, "%d%d%d", &n, &m, &s );
for( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &x, &y );
muchii[x].push_back(y);
}
fclose( fin );
for( i = 1; i <= n; i++ )
noduri[i] = -1;
myQueue.push(s);
noduri[s] = 0;
while( myQueue.size() ) {
point = myQueue.back();
myQueue.pop();
for( i = 0; i < muchii[point].size(); i++ ) {
if( noduri[muchii[point][i]] == -1 ) {
noduri[muchii[point][i]] = noduri[point] + 1;
myQueue.push( muchii[point][i] );
}
}
}
fout = fopen( "bfs.out", "w" );
for( i = 1; i <= n; i++ )
fprintf( fout, "%d ", noduri[i] );
fclose( fout );
return 0;
}