Pagini recente » Cod sursa (job #507563) | ioi_training | Cod sursa (job #2312183) | Cod sursa (job #2693680) | Cod sursa (job #1905893)
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define nmax 100001
vector<int>ad[nmax];
queue<int> coadaRoxi;
int n,m,vf,x,y;
int viz[nmax];
void bfs(int n,int vf){
int c[nmax]={0},inc,sf;
inc=1;
sf=1;
viz[vf]=1;
c[inc]=vf;
while(inc<=sf)
{for(int i=0;i<ad[c[inc]].size();i++){
if(viz[ad[c[inc]][i]]==0) {
sf++;
c[sf]=ad[c[inc]][i];
viz[ad[c[inc]][i]]=viz[c[inc]]+1;
//fout<<ad[c[inc]][i]<<" ";
}
}
inc++;
}
}
/*
void bfs2() {
while(coadaRoxi.size()) {
int nodC=coadaRoxi.front();
coadaRoxi.pop();
for(int i=0;i<ad[nodc].size();i++) {
int nodVecin = ad[nodC][i];
if(!viz[nodVecin]) {
coadaRoxi.push(nodVecin);
viz[nodVecin]=viz[nodC]+1;
}
}
}
}
*/
int main()
{
fin>>n>>m>>vf;
for(int i=1;i<=m;i++)
{fin>>x>>y;
ad[x].push_back(y);
//ad[y].push_back(x);
}
coadaRoxi.push(vf);
bfs(n,vf);
for(int i=1;i<=n;i++)
fout<<viz[i]-1<<" ";
// bfs2();
return 0;
}