Cod sursa(job #482856)

Utilizator petroMilut Petronela petro Data 5 septembrie 2010 19:29:33
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>
#include<vector>
#include<queue>
#define M 100005
#define pb push_back
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

typedef vector<int> VI;
VI a[M];
queue<long> q;
long viz[M],n,m,s;

void cit()
{
	long i,x,y;
	f>>n>>m>>s;
	
	for(i=1;i<=m;++i)
	{
		f>>x>>y;
		a[x].pb(y);
	}
	f.close();
}

void bfs()
{
	long i,k;
	for(i=1;i<=n;++i)
		viz[i]=-1;
		
	viz[s]=0;
	q.push(s);
	
	while(!q.empty())
	{
		k=q.front();
		q.pop();
		
		for(i=0;i<a[k].size();++i)
			if(viz[a[k][i]]==-1) {viz[a[k][i]]=viz[k]+1;
								  q.push(a[k][i]);}
	}
	
}

int main()
{
	cit();
	bfs();
	for(long i=1;i<=n;++i)
		g<<viz[i]<<" ";
	    
	g.close();
	return 0;
}