Cod sursa(job #651167)

Utilizator PetroiuDorinPetroiu Dorin ALexandru PetroiuDorin Data 19 decembrie 2011 23:18:46
Problema Parcurgere DFS - componente conexe Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.96 kb
#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;}