Cod sursa(job #797415)

Utilizator shuleavSulea Vlad shuleav Data 13 octombrie 2012 23:41:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> G[100005];
queue <int> Q;
int n,m,s,viz[100005],c[100005],i,x,y;

void bfs()
{
	int nod,i,vec;
	Q.push(s);
	viz[s]=1;
	while(!Q.empty())
		{
			nod=Q.front();
			Q.pop();
			for(i=0;i<G[nod].size();i++)
				{
					vec=G[nod][i];
					if(!viz[vec])
						{
							Q.push(vec);
							viz[vec]=1;
							c[vec]=c[nod]+1;
						}
				}
		}
	for(i=1;i<=n;i++)
		if(!viz[i])
			g << "-1" << ' ';
		else
			g << c[i] << ' ';
}

int main()
{
	f >> n >> m >> s;
	for(i=1;i<=m;i++)
	{
		f >> x >> y;
		G[x].push_back(y);
	}
	bfs();
    return 0;
}