Cod sursa(job #936267)

Utilizator s1mpMihai Alexandru s1mp Data 6 aprilie 2013 14:32:37
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;

#define Nmax 100001

vector <int> lista[Nmax];
queue <int> Q;

int n,m,vizitat[Nmax],Start;

void bf(int k)
{
for(int i=1;i<=n;i++)
	vizitat[i]=-1;
vizitat[k]=0;
Q.push(k);
while (!Q.empty()) 
	{int k=Q.front();
	for(unsigned int i=0;i<lista[k].size();++i) if (vizitat[lista[k][i]]==-1) {vizitat[lista[k][i]]=vizitat[k]+1;Q.push(lista[k][i]);}
	Q.pop();}
}

int main()
{
ifstream f("bfs.in");
f>>n;
f>>m;
f>>Start;
for (int i=1;i<=m;i++)
	{int x,y;
	 f>>x;
	 f>>y;
	 lista[x].push_back(y);}
f.close();
bf(Start);
ofstream g("bfs.out");
for(int i=1;i<=n;i++)
	g<<vizitat[i]<<" ";
g.close();
return 0;
}