Pagini recente » Cod sursa (job #104614) | Cod sursa (job #1273754) | Cod sursa (job #917564) | Cod sursa (job #1475891) | Cod sursa (job #2215300)
//#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
queue <pair<int,int>> q;
vector<int> v[100005];
int f[100005],vect[100005];
int main()
{
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n,m,s,x,y;
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
cin>>x>>y;
v[x].push_back(y);
}
f[s]=1;
pair <int,int> zs;
zs.first=s;
zs.second=0;
q.push(zs);
int nr=1,ok=1;
while(!q.empty() or ok==1){
pair<int,int>z=q.front();
q.pop();
for(int i=0;i<v[z.first].size();i++){
if(f[v[z.first][i]]==0){
ok=0;
pair<int,int> za;
za.first=v[z.first][i];
za.second=z.second+1;
q.push(za);
f[v[z.first][i]]=1;
vect[v[z.first][i]]=z.second+1;
}
}
}
for(int i=1;i<=n;i++){
if(vect[i]==0 and i!=s)
cout<<"-1 ";
else
if(i==s)
cout<<"0 ";
else
cout<<vect[i]<<" ";
}
return 0;
}