Pagini recente » Cod sursa (job #140950) | Cod sursa (job #290499) | Cod sursa (job #1409914) | Cod sursa (job #1607574) | Cod sursa (job #637436)
Cod sursa(job #637436)
#include<stdio.h>
#include<vector>
using namespace std;
vector <int> vecini[100010];
unsigned int list[100010],li[100010],sel[100010],el_act,ult_el,m=0;
void bf(int x){
unsigned int i;
int nod;
list[1]=x;
sel[x]=1;
el_act=1;ult_el=1;
li[x]=0;
while(el_act<=ult_el){
nod=list[el_act];
for(i=0;i<vecini[nod].size();i++){m++;
if(!sel[vecini[nod][i]]){
list[++ult_el]=vecini[nod][i];
li[list[ult_el]]=li[list[vecini[nod][i]]]+1;
sel[vecini[nod][i]]=1;
}}
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;
}