Pagini recente » Cod sursa (job #3242329) | Cod sursa (job #3176577) | Cod sursa (job #2650666) | Cod sursa (job #2671813) | Cod sursa (job #699776)
Cod sursa(job #699776)
#include<stdio.h>
#define NMax 10000
FILE *fin, *fout;
long n,m,s;
int x,y;
long int a[NMax][NMax];
long int viz[NMax],c[NMax];
int citire()
{
fscanf(fin,"%d%d%d",&n,&m,&s);
while(m!=0)
{
fscanf(fin,"%d%d",&x, &y);
if(x!=y)
{
a[x][0]++;
a[x][a[x][0]]=y;
}
m--;
}
}
int parcurg(int x)
{
long i,j;
long prim,ultim;
long drum[NMax];
viz[x]=0;
c[0]=x;
prim=ultim=0;
while(prim<=ultim)
{
x = c[prim++];
for(j=1;j<=a[x][0];j++)
if(viz[a[x][j]]==0)
{
viz[a[x][j]]=viz[x]+1;
c[++ultim]=a[x][j];
}
}
for(i=1;i<=n;i++)
if(viz[i]==0)
viz[i]--;
viz[s]=0;
}
main()
{
fin=fopen("bfs.in","r");
fout=fopen("bfs.out","w");
citire();
parcurg(s);
for(int i=1;i<=n;i++)
fprintf(fout,"%d ",viz[i]);
fclose(fin);
fclose(fout);
}