Pagini recente » Cod sursa (job #348928) | Cod sursa (job #2202512) | Cod sursa (job #1096819) | Cod sursa (job #1552413) | Cod sursa (job #2734246)
#include <deque>
#include <fstream>
#include <vector>
#define dim 100005
using namespace std;
string file = "bfs";
ifstream fin(file + ".in");
ofstream fout(file + ".out");
vector<int> L[dim];
deque<int> q;
int d[dim];
bool fr[dim];
int n, m, start, x, y;
inline void bfs( int nod ){
fr[nod] = true;
d[nod] = 0;
q.push_back(nod);
while(!q.empty()){
nod = q.front();
q.pop_front();
for( int i = 0; i < L[nod].size(); ++i )
if(!fr[L[nod][i]]){
fr[L[nod][i]] = true;
d[L[nod][i]] = d[nod] + 1;
q.push_back(L[nod][i]);
}
}
}
int main(){
fin>>n>>m>>start;
for( int i = 1; i <= m; ++i ){
fin>>x>>y;
L[x].push_back(y);
}
bfs(start);
for( int i = 1; i <= n; ++i )
if(fr[i] == 0)
fout<<-1<<" ";
else
fout<<d[i]<<" ";
return 0;
}