Pagini recente » Cod sursa (job #583838) | Cod sursa (job #1098864) | Cod sursa (job #1630775) | Cod sursa (job #1747659) | Cod sursa (job #1696563)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define N 1010
using namespace std;
int parc[N];
int muc[N][N];
int dist[N];
int que[N],head,tail;
int deq(){
return que[tail++];
}
void enq(int x){
que[head++]=x;
}
int main(){
int i,n,m,s;
int x,y,c;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(i=0;i<m;i++){
scanf("%d%d",&x,&y);
muc[x][y]=1;
}
enq(s);
parc[s]=1;
while(tail<head){
c=deq();
for(i=1;i<=n;i++){
if(parc[i]==0 && muc[c][i]){
enq(i);
dist[i]=dist[c]+1;
parc[i]=1;
}
}
}
for(i=1;i<=n;i++){
if(dist[i]==0 && i!=s){
dist[i]=-1;
}
printf("%d ",dist[i]);
}
return 0;
}