Pagini recente » Cod sursa (job #935569) | Cod sursa (job #1521348) | Cod sursa (job #1338966) | Cod sursa (job #845043) | Cod sursa (job #2315805)
#include <bits/stdc++.h>
std::vector < int > g[100001];
std::queue < int > q;
int d[100001];
int main() {
FILE *fin, *fout;
int n, m, s, x, y, nd, i;
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", &x, &y );
g[x].push_back( y );
}
for ( i = 1; i <= n; i++ )
d[i] = -1;
d[s] = 0;
q.push( s );
while ( !q.empty() ) {
nd = q.front();
q.pop();
for ( i = 0; i < g[nd].size(); i++ ) {
if ( d[g[nd][i]] == -1 ) {
d[g[nd][i]] = d[nd] + 1;
q.push( g[nd][i] );
}
}
}
for ( i = 1; i <= n; i++ )
fprintf( fout, "%d ", d[i] );
fclose( fin );
fclose( fout );
return 0;
}