Pagini recente » Cod sursa (job #2542169) | Cod sursa (job #1708213) | Cod sursa (job #1521169) | Cod sursa (job #2838816) | Cod sursa (job #651167)
Cod sursa(job #651167)
#include<stdio.h>
#define N 100001
int n,nr,m,viz[N];
int c[N], coada[N],prim,ult;
FILE *f,*rez;
typedef struct Nod { int inf;
struct Nod *urm; } Nod;
Nod *v[N];
void parc_BFS(int x)
{Nod *q;
int a;
coada[ult+1]=x;
c[x]=1;
viz[x]=1;
for(prim=0;prim<ult;++prim)
{a=coada[prim];
for(q=v[a];q;q=q->urm)
if(viz[q->inf]!=0)
{coada[ult+1]=q->inf;
viz[q->inf]=1;
c[q->inf]=c[a]+1;
}}}
void cit()
{int cont,b,c;
Nod *q;
f=fopen("parcurgere.in","r");
fscanf(f,"%d%d%d",&n,&nr,&m);
for(cont=1;cont<=nr;++cont)
{fscanf(f,"%d%d",&b,&c);
if(!(q=(Nod*) malloc (sizeof(Nod)))) return ;
q->inf=c;
q->urm=v[b];
v[b]=q;}}
void afis()
{int cont;
rez=fopen("parcurgere.out","w");
for(cont=1;cont<=n;++cont)
fprintf(rez,"%d ",c[cont]-1);
}
int main()
{cit(); //citirea
parc_BFS(m); //functia
afis(); //afisarea
fclose(f); fclose(rez);
return 0;}