Pagini recente » Cod sursa (job #383541) | Cod sursa (job #2203045) | Cod sursa (job #15925) | Cod sursa (job #1883559) | Cod sursa (job #713586)
Cod sursa(job #713586)
#include<stdio.h>
#include<stdlib.h>
struct nod
{
int info;
nod *adr_urm;
};
nod* POP(nod *&cap)
{
nod *d=cap;
cap=cap->adr_urm;
return d;
}
void PUSH(nod *&cap,nod *&coada,int i)
{
if(!cap)
{
nod *d=(nod *)malloc(1*sizeof(nod));
d->info=i;
d->adr_urm=NULL;
coada=d;
cap=d;
return ;
}
nod *p=(nod *)malloc(1*sizeof(nod));
p->info=i;
p->adr_urm=NULL;
coada->adr_urm=p;
coada=p;
}
nod *v[10],*coada,*cap;
int viz[10],dist[10];
void BF(int s)
{
viz[s]=1;
PUSH(cap,coada,s);
while(cap)
{
nod *h=POP(cap);
int k=h->info;
printf("%i ",k);
while(v[k])
{
if(viz[v[k]->info] == 0)
{
dist[v[k]->info]= 1 + dist[k];
PUSH(cap,coada,v[k]->info);
viz[v[h->info]->info]=1;
}
v[h->info]=v[h->info]->adr_urm;
}
}
}
int main()
{
nod *d;
int N,M,S,i,nr1,nr2;
FILE *f=fopen("bfs.in","rt");
FILE *g=fopen("bfs.out","wt");
fscanf(f,"%i%i%i",&N,&M,&S);
while(!feof(f))
{
fscanf(f,"%i%i",&nr1,&nr2);
nod *p=(nod *)malloc(1*sizeof(nod));
p->info=nr2;
p->adr_urm=v[nr1];
v[nr1]=p;
}
BF(S);
for(i=1;i<=N;i++)
if(dist[i]==0 && i!=S)
fprintf(g,"-1 ");
else fprintf(g,"%i ",dist[i]);
return 0;
}