Cod sursa(job #1018950)

Utilizator vladrochianVlad Rochian vladrochian Data 30 octombrie 2013 10:37:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int n,m,s,dist[100001],i,x,y;
vector<int>g[100001];
queue<int>q;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
void bfs(int nod)
{
	for(i=0;i<g[nod].size();i++)
	{
		if(dist[g[nod][i]]==-1)
		{
			q.push(g[nod][i]);
			dist[g[nod][i]]=dist[nod]+1;
		}
	}
}
int main()
{
	fin>>n>>m>>s;
	for(i=1;i<=n;i++)
		dist[i]=-1;
	dist[s]=0;
	for(i=0;i<m;i++)
	{
		fin>>x>>y;
		g[x].push_back(y);
	}
	q.push(s);
	while(!q.empty())
	{
		bfs(q.front());
		q.pop();
	}
	for(i=1;i<=n;i++)
		fout<<dist[i]<<" ";
	fout<<"\n";
	return 0;
}