Pagini recente » Cod sursa (job #1071237) | Cod sursa (job #1509262) | Cod sursa (job #1774473) | Cod sursa (job #1013197) | Cod sursa (job #2770894)
#include <fstream>
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
const int INF = 1e9;
const int NMAX = 1e5;
vector <int> edges[NMAX + 1];
deque <pair<int, int>> dq;
int dist[NMAX + 1];
void bfs( int node ) {
dq.push_back( { node, 0 } );
while ( !dq.empty() ) {
node = dq.front().first;
int d = dq.front().second;
dq.pop_front();
dist[node] = d;
for ( auto i : edges[node] ) {
if ( !dist[i] ) {
dq.push_back( { i, d + 1 } );
}
}
}
}
int main() {
ifstream fin( "bfs.in" );
ofstream fout( "bfs.out" );
int n, m, i, a, b, s;
fin >> n >> m >> s;
for ( i = 0; i < m; i ++ ) {
fin >> a >> b;
if ( a != b ) {
edges[a].push_back( b );
}
}
bfs( s );
for ( i = 1; i <= n; i ++ ) {
if ( i == s ) {
fout << 0 << ' ';
} else if ( dist[i] == 0 ) {
fout << -1 << ' ';
} else {
fout << dist[i] << ' ';
}
}
return 0;
}