Pagini recente » Cod sursa (job #1906634) | Cod sursa (job #2390581) | Cod sursa (job #1895017) | Cod sursa (job #2593581) | Cod sursa (job #3247902)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,start,f[100001],d[100091];
vector<int>G[100001];
int main(){
fin>>n>>m>>start;
while(m--){
int i,j; fin>>i>>j;
G[i].push_back(j);
}
queue<int>Q;
Q.push(start);
for(int i=1;i<=n;i++)
if(i!=start)
d[i]=1000000000;
f[start]=1;
while(!Q.empty()){
int nod = Q.front();
Q.pop();
f[nod]=0;
for(auto x : G[nod]){
if(d[x]>d[nod]+1)
{
d[x]=d[nod]+1;
if(f[x]==0){
f[x]=1;
Q.push(x);
}
}
}
}
for(int i=1;i<=n;i++)
if(d[i]!=1000000000)
fout<<d[i]<<" ";
else
fout<<-1<<" ";
return 0;
}