Cod sursa(job #1153360)

Utilizator DanutsDanut Rusu Danuts Data 25 martie 2014 13:41:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
#define maxm 1000003
#define maxn 100003
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s,x,y;
vector <int> G[maxm],viz(maxn),cost(maxn);
queue <int> Q;
void bfs(int s){
	for(int i=1;i<=n;i++)
		cost[i]=-1;
	cost[s]=0;
	viz[s]=1;
	Q.push(s);
	while(Q.empty()==0){
		int x=Q.front();
		Q.pop();
		for(int i=0;i<G[x].size();i++){
			if(viz[G[x][i]]==0){
				Q.push(G[x][i]);
				viz[G[x][i]]=1;
				cost[G[x][i]]=cost[x]+1;
			}
		}
	}
}
	
int main (){
	f>>n>>m>>s;
	for(int i=1;i<=m;i++){
		f>>x>>y;
		G[x].push_back(y);
	}
	bfs(s);
	for(int i=1;i<=n;i++)
		g<<cost[i]<<" ";
	return 0;
}