Cod sursa(job #606475)

Utilizator batistaUPB-Oprea-Cosmin-Dumitru batista Data 4 august 2011 15:36:10
Problema BFS - Parcurgere in latime Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
using namespace std;
int x,y,n,m;
struct nod{int info;nod *adr;} *v[100001],*p;
ofstream g("bfs.out");
short viz[100001];
int c[100001],s,i,d[100001]; 
void bf(int nod)
{ short u=1,p=1;
  c[1]=nod; viz[nod]=1;
   while(p<=u)
   {
	nod=c[p];
	 while(v[nod])
	 { 
		if(!viz[v[nod]->info]){ u++; d[v[nod]->info]=d[nod]+1;  c[u]=v[nod]->info; viz[c[u]]=1;}
		v[nod]=v[nod]->adr;
	 }
	  p++;
   }
}

int main()
{
	ifstream f("bfs.in");
	f>>n>>m>>s;
	for(i=1;i<=m;i++)
	{f>>x>>y;
	 //add nod
	  p=new nod;	p->info=y;	p->adr=v[x];	v[x]=p;
	}
	//copiez nodurile initiale
	bf(s);
	for(i=1;i<s;i++) if(viz[i])g<<d[i]<<" "; else g<<-1<<" ";
	g<<0<<" ";
	for(i=s+1;i<=n;i++) if(viz[i])g<<d[i]<<" "; else g<<-1<<" ";
	f.close();g.close();
return 0;}