Cod sursa(job #545247)

Utilizator MacaMacarescu Alexandru Maca Data 2 martie 2011 22:59:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
struct nod
{	vector<int>vecin;
};
int N,M,S;
bool vizitat[100001];
nod graf[100001];
int dist[100001];
queue<int>q;
void bfs()
{	int x,i;
	vizitat[S]=true;
	q.push(S);
	while(!q.empty())
	{	x=q.front();q.pop();
		for(i=0;i<graf[x].vecin.size();i++)
			if(!vizitat[graf[x].vecin[i]])
			{	q.push(graf[x].vecin[i]), dist[graf[x].vecin[i]]=dist[x]+1;
				vizitat[graf[x].vecin[i]]=true;
			}	
	}	
	
}	
int main()
{	int i,x,y;
	in>>N>>M>>S;
	for(i=1;i<=M;i++)
	{	in>>x>>y;
		graf[x].vecin.push_back(y);
	}
	bfs();
	for(i=1;i<=N;i++)
	{	if(vizitat[i])
			out<<dist[i]<<" ";
		else
			out<<-1<<" ";
	}		
	return 0;
	
}