Cod sursa(job #573029)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 5 aprilie 2011 20:22:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s,cost[100005],w,viz[100005],a,b;
struct nod{ int x; nod *urm;} *v[100005],*p;
queue<int> c;
int main()
{
	int i;
	f>>n>>m>>s;
	for(i=0;i<m;++i)
		{ f>>a>>b;
		  p=new nod;
		  p->x=b;
		  p->urm=v[a];
		  v[a]=p;
		}
	c.push(s);
	viz[s]=1;
	while(!c.empty())
		{ w=c.front();
		  p=v[w];
		  c.pop();
		  while(p)
			  {if(!viz[p->x])
			  { cost[p->x]=cost[w]+1;
			    viz[p->x]=1;
			    c.push(p->x);}
			    p=p->urm;
			  }
		}
	for(i=1;i<=n;i++)
		if(cost[i]) g<<cost[i]<<' ';
			else if(i==s) g<<0<<' ';
					else g<<-1<<' ';
	f.close(); g.close();
	return 0;
}