Cod sursa(job #540056)

Utilizator selea_teodoraSelea Teodora selea_teodora Data 23 februarie 2011 18:00:36
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
using namespace std;
typedef
struct nod
{
	int nr;
	nod*urm;
}*Pnod;
int n,m,s,i,j,c[100000],viz[100000],prim,utlim,d[100000];
Pnod l[100000];
void bfs(int start)
{
	int prim=1,ultim=1;
	viz[start]=1;
	c[prim]=start;
	Pnod p=new (nod);
	while(prim<=ultim)
	{
		p=l[c[prim]];
		while(p)
			{
			if(viz[p->nr]==0)
					{
					c[++ultim]=p->nr;
					viz[p->nr]=1;
					d[p->nr]=d[c[prim]]+1;
					}
			p=p->urm;
			}
		prim++;
	}
}
int main()
{
	ifstream fin("bfs.in");
	fin>>n>>m>>s;
	Pnod p;
	while(fin>>i>>j)
	{
		p=new (nod);
		if(i!=j)
		{
			p->nr=j;
			p->urm=l[i];
			l[i]=p;
		}
	}
	fin.close();
	ofstream fout("bfs.out");
	bfs(s);
	for(i=1;i<=n;i++)
		if(viz[i]!=0)
			fout<<d[i]<<" ";
		else fout<<-1<<" ";
	fout<<'\n';
	fout.close();
	return 0;
}