Pagini recente » Cod sursa (job #2042740) | Cod sursa (job #414749) | Cod sursa (job #1583631) | Cod sursa (job #561243) | Cod sursa (job #269321)
Cod sursa(job #269321)
#include <fstream.h>
#define MAX 100001
ifstream in("bfs.in");
ofstream out("bfs.out");
struct NOD{ int info;
NOD *urm;} *VF[MAX];
int a,n,m,s[MAX],d[MAX],st[MAX],prim,ultim;
void init(){
int i;
for(i=1;i<=n;++i)d[i] = -1;
}
void adauga(NOD *&prim,int y){
NOD *p;
p = new NOD;
p->info = y;
p->urm = prim;
prim = p;
}
void citire(){
int x,y;
in>>n>>m>>a;
while(in>>x>>y)
adauga(VF[x],y);
}
void parcurge(){
int j=0;
NOD *q;
prim = ultim = 1;
s[a] = 1;
st[prim] = a;
while(prim<=ultim && j<n){
for(q = VF[st[prim]];q!=NULL;q=q->urm)
if(!s[q->info])
{
st[++ultim] = q->info;
s[q->info] = 1;
d[q->info] = d[st[prim]]+1;
j++;
}
prim++;
}
}
int main(){
citire();
parcurge();
for(int i=1;i<=n;++i)
if(a!=i)
if(d[i] == 0) out<<-1<<" ";
else out<<d[i]<<" ";
else out<<d[i]<<" ";
return 0;
}