Cod sursa(job #395343)

Utilizator nautilusCohal Alexandru nautilus Data 12 februarie 2010 20:57:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#define dmax 100001
#include<vector>

using namespace std;

vector<long> a[dmax];
vector<long> q;

long n,m,s,inc,sfc,elem;
long cost[dmax];

int main()
{
 long i,x,y;
	
 ifstream fin("bfs.in");
 fin>>n>>m>>s;
 
 for (i=1; i<=m; i++)
	 {
	  fin>>x>>y;
	  a[x].push_back(y);
	 }
 
 inc=0; sfc=1;
 q.push_back(0); q.push_back(s);
 while (inc<sfc)
	 {
	  inc++; elem=q[inc];
	  for (i=0; i<a[elem].size(); i++)
		  if (cost[a[elem][i]]==0 && a[elem][i]!=s)
			  {
			   cost[a[elem][i]]=cost[elem]+1;
			   sfc++;
			   q.push_back(a[elem][i]);
			  }
	 }
 
 ofstream fout("bfs.out");
 for (i=1; i<=n; i++)
	 if (i==s)
		 fout<<"0 "; else
		 if (cost[i]==0)
			 fout<<"-1 "; else
			 fout<<cost[i]<<" ";
	
 fin.close();
 fout.close();
	
 return 0;
}