Cod sursa(job #393702)

Utilizator APOCALYPTODragos APOCALYPTO Data 9 februarie 2010 20:37:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;

#define foreach(v)  for(typeof (v).begin() it=(v).begin();it!=(v).end();it++)
vector<int> G[100005];
int lg[100005];
vector<int> tata(100005);
queue<int> coada;
int m,n,s;
ofstream fout("bfs.out");
void bfs()
{ int v;
tata[s]=-1;
  coada.push(s);

  lg[s]=0;
  while(!coada.empty())

  {
  v=coada.front();
  coada.pop();
  foreach(G[v])
    if(tata[*it]==0)
       {tata[*it]=v;
       coada.push(*it);
       lg[*it]=lg[tata[*it]]+1;
       }
  }
}



int main()
{int i,alfa,beta;
    ifstream fin("bfs.in");
     fin>>n>>m>>s;
     for(i=1;i<=m;i++)
       {fin>>alfa>>beta;
       G[alfa].push_back(beta);
       }
      for(i=1;i<=n;i++)
      {tata[i]=0;
      lg[i]=-1;
      }
     bfs();
     for(i=1;i<=n;i++)
      fout<<lg[i]<<" ";
      fin.close();
      fout.close();

      return 0;
}