Pagini recente » Cod sursa (job #1464588) | Cod sursa (job #290495) | Cod sursa (job #309847) | Cod sursa (job #2583336) | Cod sursa (job #636506)
Cod sursa(job #636506)
#include<stdio.h>
#include<vector>
using namespace std;
vector <int> vecini[10000];
int list[10000],li[10000],sel[10000],el_act,ult_el,m=0;
void bf(int x){
int nr=0;
int nod;
list[1]=x;
sel[x]=1;
el_act=1;ult_el=1;
li[x]=nr;
while(el_act<=ult_el){
nod=list[el_act];nr++;
for(int i=0;i<vecini[nod].size();i++){m++;
if(!sel[vecini[nod][i]]){
list[++ult_el]=vecini[nod][i];
li[vecini[nod][i]]=nr;
sel[vecini[nod][i]]=1;
}}
if(m==vecini[nod].size()) nr--;
el_act++;
}
}
void init(int n){
for(int i=1;i<=n;i++)
li[i]=-1;
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m,s,x,y;
scanf("%d",&n);scanf("%d",&m);scanf("%d\n",&s);
for(int i=0;i<m;i++){
scanf("%d",&x);scanf("%d\n",&y);
vecini[x].push_back(y);
}
init(n);
bf(s);
for(int i=1;i<=n;i++){
printf("%d ",li[i]);
}
return 0;
}