Pagini recente » Cod sursa (job #408973) | Cod sursa (job #2390911) | Cod sursa (job #3253400) | Cod sursa (job #1444184) | Cod sursa (job #1695767)
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector<int> a[NMAX];
int n,m,s,viz[NMAX],t[NMAX],nr;
void citire(){
int x,y,i;
cin>>n>>m>>s;
for(i=1;i<=m;i++){
cin>>x>>y;
a[x].push_back(y);
}
}
queue<int> coada;
void BFS(int x){
coada.push(x);
viz[x]=1;
while(!coada.empty()){
int varf=coada.front();
vector<int>::iterator it;
for(it=a[varf].begin();it!=a[varf].end();++it){
if(viz[*it]==0){
viz[*it]=1;
coada.push(*it);
t[*it]=varf;
}
}
coada.pop();
}
}
void refac(int nod){
if(nod){
refac(t[nod]);
++nr;
}
}
int main(){
citire();
BFS(s);
int j;
for(j=1;j<=n;j++){
if(j!=s){
nr=0;
refac(j);
if(nr-1==0)
cout<<-1<<' ';
else cout<<nr-1<<' ';
}
else
cout<<0<<' ';
}
return 0;
}