Pagini recente » Cod sursa (job #2169698) | Cod sursa (job #1535882) | Cod sursa (job #1755123) | Cod sursa (job #1216021) | Cod sursa (job #3308222)
#include <iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;ifstream fin("bfs.in");ofstream fout("bfs.out");
vector<int>v[100001];
int n,m,d[100001],idx,val,i,a,b;
void bfs(int idx){
queue<int>q;
q.push(idx);
while(!q.empty()){
int nod=q.front();
q.pop();
for(auto vecin:v[nod]){
if(d[nod]+1<d[vecin]){
d[vecin]=d[nod]+1;
q.push(vecin);
}
}
}
for(int j=1;j<=n;j++)if(d[j]==n+1)d[j]=-1;
}
int main()
{
fin>>n>>m>>idx;for(i=1;i<=n;i++)d[i]=n+1;d[idx]=0;
for(i=1;i<=m;i++){
fin>>a>>b;
v[a].push_back(b);
}
bfs(idx);for(i=1;i<=n;i++)fout<<d[i]<<' ';
return 0;
}