Pagini recente » Cod sursa (job #730926) | Cod sursa (job #672749) | Cod sursa (job #2150383) | Cod sursa (job #1486332) | Cod sursa (job #1359070)
#include <iostream>
#include <vector>
#include <fstream>
#include <stdio.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
#define MAX 100009
int n,m,drum[MAX];
struct nod{int a; nod * urm;};
nod * graf[MAX];
int coada[MAX];
nod * i;
int viz[MAX];
void adaugare(int x, int y){
nod *p = new nod;
p->a = y;
p->urm = graf[x];
graf[x]=p;
}
void bfs(int st){
int prim=0;int ultim=0;
coada[prim]=st;
drum[st]=1;
while(prim<=ultim ){
i=graf[coada[prim]];
prim++;
for(*i;i!= NULL;i=i->urm){
if(drum[i->a]==0){coada[++ultim]=i->a;
drum[i->a]=drum[coada[prim-1]]+1;
}}
}
}
int s,x,y;
int main()
{
in>>n>>m>>s;
for(int i=1;i<=m;i++){
in>>x>>y;
adaugare(x,y);
}
bfs(s);
for(int i=1;i<=n;i++){out<< drum[i]-1<< " ";}
return 0;
}