Cod sursa(job #341667)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
int main()
{
ifstream f("bfs.in");
ofstream f2("bfs.out");
int n,m,s,x,y;
f>>n>>m>>s;
--s;
vector<int> v[100001];
int res[100001];
memset(res,-1,sizeof(res));
while(m--)
{
f>>x>>y;
v[x-1].push_back(y-1);
}
res[s] = 0;
queue<int> q;
q.push(s);
while(!q.empty())
{
int crt = q.front();
q.pop();
for(int i=0;i<v[crt].size();++i)
if(res[v[crt][i]]==-1)
{
res[v[crt][i]] = res[crt]+1;
q.push(v[crt][i]);
}
}
for(int i=0;i<n;++i) f2<<res[i]<<" ";
return 0;
}