Cod sursa(job #397662)

Utilizator UnOrdinaryVyper Boy UnOrdinary Data 17 februarie 2010 12:14:58
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
#define NOD 0
#define PARENT 1
int viz[20],c[2][20],st,dr,s,n,m,i,x,y,aj,g;
struct nod
{
	int info;
   nod *urm;
}*l[20],*p;
void lantmin()
{
	st=dr=1;
   c[NOD][1]=s;
   c[PARENT][1]=1;
   viz[s]=1;
   nod *vf = l[s];
   while (st<=dr)
   {
   	while (vf!=0)
      {
      	if (viz[vf->info]==0)
         {
         	viz[vf->info]=1;
            dr++;
            c[NOD][dr]=vf->info;
            c[PARENT][dr]=st;
         }
         vf=vf->urm;
      }
      st++;
      vf=l[c[NOD][st]];
   }
}

int main()
{
	ifstream f("bfs.in");
   ofstream fout("bfs.out");
   f>>n>>m>>s;
   for (i=1;i<=m;i++)
   {
   	f>>x>>y;
      p = new nod;
      p->info=y;
      p->urm=l[x];
      l[x]=p;
   }
   lantmin();
   for (x=1;x<=n;x++)
   {
   	for (i=1;i<=dr;i++)
      {
      	aj=0;
         g=0;
      	if (x==c[NOD][i])
         {
        	  	aj=1;
            while(c[PARENT][i]!=i)
            {
            	i=c[PARENT][i];
               g++;
            }
            i=dr+1;
         }
      }
      if (aj==0) fout<<-1<<" ";
      else fout<<g<<" ";
   }
   return 0;
}