Pagini recente » Cod sursa (job #1213753) | Cod sursa (job #660813) | Cod sursa (job #1537616) | Cod sursa (job #1680457) | Cod sursa (job #2792761)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
queue<int>d;
int mn[100001];
vector<int>v[100001];
int main() {
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n, m, s, i, a, b, c;
cin>>n;
cin>>m;
cin>>s;
for( i = 1; i <= n; i++ ) {
mn[i] = 2100000000;
}
mn[s] = 0;
for( i = 1; i <= m; i++ ) {
cin>>a>>b;
if( a != b )
v[a].push_back( b );
}
d.push( s );
while( !d.empty() ) {
a = d.front();
d.pop();
for( i = 0; i < v[a].size(); i++ ) {
b = v[a][i];
if( mn[a] + 1 < mn[v[a][i]] ) {
mn[v[a][i]] = mn[a] + 1;
d.push( v[a][i] );
}
}
}
for( i = 1; i <= n; i++ ) {
if( mn[i] == 2100000000 )
mn[i] = -1;
cout<<mn[i]<<" ";
}
return 0;
}