Cod sursa(job #403587)

Utilizator alex@ndraAlexandra alex@ndra Data 25 februarie 2010 09:15:33
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;

#define Nmax 100001

vector <int> G[Nmax];
int n, m, s,coada[Nmax],cost[Nmax];

void citire()
{
	int i, x,y;
	
  ifstream f("bfs.in");
     f>>n>>m>>s;
	 
	 for(i=1;i<=m;i++)
	 {
		f>>x>>y;
		G[x].push_back(y);
	 }
  f.close();

 for(i=1;i<=n;i++)
	cost[i]=-1;
 
    cost[s]=0;
	
	
}

void bfs(int nod)
{
  int li,ls,vecini,i;
  
  li=1;ls=1;
  coada[li]=nod;

  while(li<=ls)
  {
	vecini=G[coada[li]].size();
	
	for(i=0;i<vecini;i++)
	   if(cost[G[coada[li]][i]]==-1)
	   {
		ls++;
		coada[ls]=G[coada[li]][i];
		cost[coada[ls]]=cost[coada[li]]+1;
	   }
	
	  
    li++;
  }	
}

void afisare()
{
  int i;
  
    ofstream g("bfs.out");
	
    for(i=1;i<=n;i++)
    	g<<cost[i]<<" ";
    g.close();
}

int main()
{
 citire();
 bfs(s); 
 afisare();
 return 0;
}