Cod sursa(job #854579)

Utilizator blechereyalBlecher Eyal blechereyal Data 13 ianuarie 2013 19:18:43
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
//BFS
using namespace std;
#include <fstream>
#include <vector>
#include <deque>
#define MAXN 100000
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> vecini[MAXN];

int cost[MAXN];
int N,M,S,x,y;

void BFS(int nod)
{int i,vizi;
int viz[MAXN];
vector<int>::iterator it;
deque <int> coada;
for (i=1;i<=N;i++) cost[i]=-1;
coada.push_back(nod);     
cost[nod]=0;

 while (!coada.empty())

  {    
  
  for (it=vecini[nod].begin();it!=vecini[nod].end();++it)
     if (cost[*it]==-1) 
         {
         coada.push_back(*it);
         cost[*it]=cost[coada.front()] + 1;
         
         }
     
     
  coada.pop_front();
  nod=coada.front();
  }
     
}

int main()
{
int i;
f>>N>>M>>S;
for (i=0;i<M;++i)
{
f>>x>>y;    
vecini[x].push_back(y);
}

BFS(S);

for (i=1;i<=N;i++)
 g<<cost[i]<<" ";


return 0;
}