Pagini recente » Cod sursa (job #3248414) | Cod sursa (job #220939) | Cod sursa (job #1637164) | Cod sursa (job #2101009) | Cod sursa (job #1696578)
#include <iostream>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#define N 100010
using namespace std;
int parc[N];
std::vector<int> muc[N];
int dist[N];
int grad[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].push_back(y);
grad[x]++;
}
enq(s);
parc[s]=1;
while(tail<head){
c=deq();
for(i=0;i<grad[c];i++){
if(parc[ muc[c][i] ]==0 ){
enq( muc[c][i] );
dist[ muc[c][i] ]=dist[c]+1;
parc[ muc[c][i] ]=1;
}
}
}
for(i=1;i<=n;i++){
if(dist[i]==0 && i!=s){
dist[i]=-1;
}
printf("%d ",dist[i]);
}
return 0;
}