Pagini recente » Cod sursa (job #1000183) | Cod sursa (job #645101) | Cod sursa (job #695875) | Cod sursa (job #650874) | Cod sursa (job #650875)
Cod sursa(job #650875)
#include<stdio.h>
#define NMAX 100001
int viz[NMAX],n,m,S;
FILE *inf,*outf;
typedef struct Node
{ int info; struct Node *next; }Node;
Node *G[NMAX];
int coada[NMAX],prim,ultim,cost[NMAX],viz[NMAX];
void bfs(int a)
{
Node *p;
int x;
coada[ultim++]=a;
cost[a]=1;
viz[a]=1;
for(prim=0;prim<ultim;prim++)
{
x=coada[prim];
for(p=G[x];p;p=p->next)
if(!viz[p->info])
{
coada[ultim++]=p->info;
viz[p->info]=1;
cost[p->info]=cost[x]+1;
}
}
}
void citire()
{int i,z,y;
Node *p;
inf=fopen("bfs.in","r");
fscanf(inf,"%d %d %d",&n,&m,&S);
for(i=1;i<=m;i++)
{
fscanf(inf,"%d %d",&z,&y);
if(!(p=(Node*)malloc(sizeof(Node)))) return ;
p->info=y;
p->next=G[z];
G[z]=p;
}
}
void afisare()
{
int i;
outf=fopen("bfs.out","w");
for(i=1;i<=n;i++)
fprintf(outf,"%d ",cost[i]-1);
}
int main()
{
citire();
bfs(S);
afisare();
fclose(inf);
fclose(outf);
return 0;
}