Cod sursa(job #575396)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 8 aprilie 2011 11:46:30
Problema BFS - Parcurgere in latime Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
using namespace std;
#include<fstream>
#include<vector>
vector <int> v[100100];
short sol[100100],list[100100],lung[100100];
int n,m,s;
void citire()
{int x,y,i;
ifstream in("bfs.in");
in>>n>>m>>s;
for(i=0;i<m;i++)
	{in>>x>>y;
	v[x].push_back(y);
	}
for(i=1;i<=n;i++)
	lung[i]=v[i].size();
in.close();
}
int main()
{int i,j,nr;
citire();
for(i=1;i<=n;i++)
	sol[i]=-1;
sol[s]=0;
nr=1;
list[1]=s;
for(i=1;i<=nr;i++)
	{for(j=0;j<lung[list[i]];j++)
		if(sol[v[list[i]][j]]==-1)
			{list[++nr]=v[list[i]][j];
			sol[list[nr]]=sol[list[i]]+1;
			}
	}
ofstream out("bfs.out");
for(i=1;i<=n;i++)
	out<<sol[i]<<" ";
out<<'\n';
out.close();
return 0;
}