Cod sursa(job #678672)

Utilizator alexapoApostol Alexandru Ionut alexapo Data 12 februarie 2012 11:04:40
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct nod
{
	int x;
	nod *urm;
}*v[100005];
nod *p;
int i,n,a,m,b,s,viz[100005],gri[100005],ok;
int main()
{
	f>>n>>m>>s;
	for(i=1;i<=m;i++)
	{
		f>>a>>b;
		p= new nod;
		p->x=b;
		p->urm=v[a];
		v[a]=p;
	}
	ok=1;
	gri[s]=1;
	int pas=1;
	while(ok)
	{
		ok=0;
		for(i=1;i<=n;i++)
			if(gri[i]&&!viz[i])
			{
				p=v[i];
				while(p)
				{
					gri[p->x]+=pas*(!gri[p->x]);
					p=p->urm;
				}
				viz[i]++;
				ok=1;
				pas++;
			}
		
	}
	for(i=1;i<=n;i++)
		if(gri[i]==0)
			gri[i]=-1;
	gri[s]=0;
	for(i=1;i<n;i++)
		g<<gri[i]<<' ';
		g<<gri[n]<<'\n';

	f.close();
	g.close();
	return 0;
}