Cod sursa(job #397708)

Utilizator UnOrdinaryVyper Boy UnOrdinary Data 17 februarie 2010 12:59:48
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
using namespace std;
#define NOD 0
#define PARENT 1
int viz[100001],c[100001],st,dr,s,n,m,i,x,y,aj,g;
struct nod
{
	int info;
   nod *urm;
}*l[100001],*p;
void lantmin()
{
	st=dr=1;
   c[1]=s;
   viz[s]=1;
   nod *vf = l[s];
   while (st<=dr)
   {
   	while (vf!=0)
      {
      	if (viz[vf->info]==0)
         {
         	viz[vf->info]=viz[st]+1;
            dr++;
            c[dr]=vf->info;
         }
         vf=vf->urm;
      }
      st++;
      vf=l[c[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 (x==s) fout<<0<<" ";
      else if (viz[x]==0) fout<<-1<<" ";
      else fout<<viz[x]<<" ";
   }
   fout<<endl;
   return 0;
}