Pagini recente » Cod sursa (job #2135608) | Cod sursa (job #1408295) | Cod sursa (job #2565468) | Cod sursa (job #2302700) | Cod sursa (job #1819401)
# include <fstream>
# include <queue>
# include <vector>
using namespace std;
struct path
{
int dist, dest;
path( int _dest, int _dist )
{
dest = _dest;
dist = _dist;
}
};
# define MAX_N 100000
int dist[1 + MAX_N];
queue<path> bfs;
vector<int> v[1 + MAX_N];
# define undefined -1
int main()
{
ifstream fin( "bfs.in" );
ofstream fout( "bfs.out" );
ios::sync_with_stdio( false );
int n, m, s, i, a, b;
fin >> n >> m >> s;
for ( i = 0; i < m; i ++ ) {
fin >> a >> b;
v[a].push_back( b );
}
for ( i = 1; i <= n; i ++ )
dist[i] = undefined;
bfs.push( path( s, 0 ) );
while ( bfs.size() ) {
path t = bfs.front();
bfs.pop();
if ( dist[t.dest] == undefined ) {
dist[t.dest] = t.dist;
for ( int i : v[t.dest] )
bfs.push( path( i, t.dist + 1 ) );
}
}
for ( i = 1; i <= n; i ++ )
fout << dist[i] << ' ';
fin.close();
fout.close();
return 0;
}