Cod sursa(job #766246)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 10 iulie 2012 18:24:54
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
// muchiile au costul 1
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
int n,m,S,x,y;
vector <int> a[100001];
int dist[100001];
void BFS(int nod)
{
	int i;
	queue <int> q;
	q.push(nod);
	int last=nod;
	while (!q.empty())
	{
		nod=q.front();
		q.pop();
		for (i=0;i<a[nod].size();i++)
		{
			if ((dist[a[nod][i]]==0 || dist[a[nod][i]]>dist[nod]+1)&& (a[nod][i]!=last))
			{
				dist[a[nod][i]]=dist[nod]+1;
				q.push(a[nod][i]);
			}
		}
		last=nod;
	}
}
int main(void)
{
	fstream f,g;
	f.open("graf.in",ios::in);
	g.open("graf.out",ios::out);
	f>>n>>m>>S;
	int i,j;
	for (i=1;i<=m;i++)
	{
		f>>x>>y;
		a[x].push_back(y);
		//a[y].push_back(x);
	}
	BFS(S);
	dist[S]=0;
	for (i=1;i<=n;i++)
		{
			if (dist[i]==0 && i!=S)
				cout<<-1<<" ";
			else
			cout<<dist[i]<<" ";
	}
}


	// afisare pt vector din STL
	/*
	for (i=1;i<=n;i++){
		
		for (j=0;j<a[i].size();j++)
			cout<<a[i][j]<<" ";
		cout<<"\n";
	}
	*/