Pagini recente » Cod sursa (job #316395) | Cod sursa (job #575425) | Cod sursa (job #2998755) | Cod sursa (job #899973) | Cod sursa (job #269309)
Cod sursa(job #269309)
#include <fstream.h>
#define MAX 100
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] = s[i] = 0;
}
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);
}
int parcurge(int i){
NOD *q;
prim = ultim = 1;
s[a] = 1;
st[prim] = a;
while(prim<=ultim){
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;
if(s[i]) return d[i];
}
prim++;
}
return -1;
}
int main(){
citire();
for(int i=1;i<=n;++i){
if(a!=i)
out<<parcurge(i)<<" ";
else
out<<0<<" ";
init();
}
return 0;
}