Pagini recente » Cod sursa (job #1230075) | Cod sursa (job #2157942) | Cod sursa (job #1370237) | Cod sursa (job #3241241) | Cod sursa (job #586323)
Cod sursa(job #586323)
#include <algorithm>
#define DIM 100000
using namespace std ;
int coada[DIM] ;
int rez[DIM] ;
struct nod{
int info ;
nod *next ;
} ;
nod *L[DIM];
void adauga( nod *& cap, int info) {
nod * p = new nod;
p->info = info;
p->next = cap;
cap = p;
}
int main () {
freopen ("bfs.in","r",stdin) ;
freopen ("bfs.out","w",stdout) ;
int n , m , s ;
scanf ("%d%d%d" , &n , &m , &s) ;
int x , y ;
for (int i=1 ; i<=m ; ++i) {
scanf ("%d%d" , &x , &y);
adauga (L[x],y);
}
for (int i=1 ; i<=n ; ++i)
rez[i]=-1 ;
rez[s]=0 ;
coada[1]=s ;
int inceput=1 ;
int sfarsit=1 ;
int pas ;
while (inceput<=sfarsit) {
pas=rez[coada[inceput]]+1 ;
int i = coada[inceput];
for ( nod *p = L[i]; p; p = p->next) {
if (rez[p->info]==-1) {
coada[++sfarsit]=p->info ;
rez[p->info]=pas ;
}
}
inceput++ ;
}
for (int i=1 ; i<=n ; ++i) {
printf ("%d " , rez[i]);
}
return 0;
}