Pagini recente » Cod sursa (job #668258) | Cod sursa (job #43016) | Cod sursa (job #997488) | Cod sursa (job #2844338) | Cod sursa (job #3198126)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int nmax= 100000;
const int inf= 1<<30;
int d[nmax+1];
vector <int> v[nmax+1];
void bfs( int x ) {
d[x]= 0;
queue <int> q;
for ( q.push(x); !q.empty(); q.pop() ) {
for ( auto it: v[q.front()] ) {
if ( d[it]==inf ) {
d[it]= d[q.front()]+1;
q.push(it);
}
}
}
}
int main() {
int n, m, s;
fin>>n>>m>>s;
for ( int i= 0, x, y; i<m; ++i ) {
fin>>x>>y;
v[x].push_back(y);
}
for ( int i= 1; i<=n; ++i ) {
d[i]= inf;
}
bfs(s);
for ( int i= 1; i<=n; ++i ) {
if ( d[i]==inf ) {
d[i]= -1;
}
fout<<d[i]<<" ";
}
fout<<"\n";
return 0;
}