Pagini recente » Cod sursa (job #1600410) | Cod sursa (job #413802) | Cod sursa (job #230978) | Cod sursa (job #2970679) | Cod sursa (job #228490)
Cod sursa(job #228490)
#include<stdio.h>
#define Max 100002
FILE*f=fopen("bfs.in","r");
FILE*g=fopen("bfs.out","w");
struct Nod
{
int info;
Nod *urm;
};
Nod *prim[Max];
int n;
int d[Max];
void insert(int x, int y) //nod de la x la y
{
Nod *p;
p=new Nod;
p->info=y;
p->urm=prim[x];
prim[x]=p;
}
void bfs(int S)
{
int c[Max];
int p=0,u=0;
int i;
for(i=1;i<=n;++i) d[i]=-1;
d[S]=0;
Nod *q;
int x;
c[0]=S;
while(p<=u)
{
int x=c[p++];
for(q=prim[x];q;q=q->urm)
{
if(d[q->info]==-1)
{
d[q->info]=d[x]+1;
c[++u]=q->info;
}
}
}
for(i=1;i<=n;++i) fprintf(g,"%d ",d[i]);
}
int main()
{
int m,s,i,x,y;
fscanf(f,"%d%d%d",&n,&m,&s);
while(m--)
{
fscanf(f,"%d%d",&x,&y);
insert(x,y);
}
bfs(s);
return 0;
}