Pagini recente » Cod sursa (job #789472) | Cod sursa (job #347273) | Cod sursa (job #85059) | Cod sursa (job #1865753) | Cod sursa (job #679694)
Cod sursa(job #679694)
#include<stdio.h>
#include<stdlib.h>
typedef struct nod{int x; nod *urm; } NODE;
NODE *v[100005];
int n,m,s;
int c[600000];
int viz[100005];
void citire()
{
FILE*f=fopen("bfs.in","r");
fscanf(f,"%d%d%d",&n,&m,&s);
NODE *q;
int x,y;
for(int i=1;i<=m;++i)
{
fscanf(f,"%d%d",&x,&y);
q=(NODE*)malloc(sizeof(NODE));
q->x=y;
q->urm=v[x];
v[x]=q;
}
fclose(f);
}
void bfs()
{
int p,u;
p=u=0;
c[0]=s;
NODE *q;
while(p<=u)
{
q=v[c[p]];
while(q)
{
if(!viz[q->x]&&q->x!=s)
{
c[++u]=q->x;
viz[q->x]=viz[c[p]]+1;
}
q=q->urm;
}
++p;
}
}
void scriere()
{
FILE*f=fopen("bfs.out","w");
for(int i=1;i<=n;++i)
if(viz[i]) fprintf(f,"%d ",viz[i]);
else
if(i==s) fprintf(f,"0 ");
else fprintf(f,"-1 ");
fclose(f);
}
int main()
{
citire();
bfs();
scriere();
return 0;
}