Pagini recente » Monitorul de evaluare | Cod sursa (job #3148968) | Cod sursa (job #161470) | Cod sursa (job #2582868) | Cod sursa (job #3286695)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector<int>v[100001];
int n,s,m,a,b;
int viz[100001];
queue<int>q;
void bfs(){
viz[s]=0;
q.push(s);
while(!q.empty()){
for(int i=0;i<v[q.front()].size();i++){
if(viz[v[q.front()][i]]==-1){
viz[v[q.front()][i]]=viz[q.front()]+1;
q.push(v[q.front()][i]);
}
}
q.pop();
}
}
int main()
{
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
cin>>a>>b;
v[a].push_back(b);
}
for(int i=1;i<=n;i++)
viz[i]=-1;
bfs();
for(int i=1;i<=n;i++)
cout<<viz[i]<<" ";
return 0;
}