Pagini recente » Cod sursa (job #2942886) | Cod sursa (job #2517776) | Cod sursa (job #2252513) | Cod sursa (job #590696) | Cod sursa (job #1700010)
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
vector <int> L[100001];
queue <int> coada;
int n,s,viz[100001];
void citire(){
int n1,n2,m;
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++){
scanf("%d %d",&n1,&n2);
L[n1].push_back(n2);
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
coada.push(s);
int primul,nod;
memset(viz,-1,sizeof(viz));
viz[s]=1;
while(!coada.empty()){
primul=coada.front();
vector <int>:: iterator it;
for(it=L[primul].begin();it!=L[primul].end();++it){
nod=*it;
if(viz[nod]==-1){
viz[nod]=viz[primul]+1;
coada.push(nod);
}
}
coada.pop();
}
for(int i=1;i<=n;i++)
if(viz[i]!=-1)
printf("%d ",viz[i]-1);
else
printf("%d ",viz[i]-1);
return 0;
}