Cod sursa(job #228422)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 7 decembrie 2008 10:39:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <queue>
#include <vector>
#include <fstream>
using namespace std;
const int NMAX=100001;
vector<int> a[NMAX];
ifstream f("bfs.in");
ofstream g("bfs.out");
int N,M,S;
void citeste(){
     int i,j;
     f>>N>>M>>S;
     while (M--){
       f>>i>>j;
       a[i].push_back(j);
       }
     }
queue<int> q;
int d[NMAX];
void bf(){
     memset(d,-1,sizeof(d));
     d[S]=0;
     q.push(S);
     while (!q.empty()){
       int x=q.front();
       q.pop();
       for (vector<int>::iterator it=a[x].begin();it!=a[x].end();++it)
         if (d[*it]==-1)
          d[*it]=d[x]+1,q.push(*it);
       }
     }
void scrie_sol(){
     for (int i=1;i<=N;++i) g<<d[i]<<' ';
     }
int main(){
    citeste();
    bf();
    scrie_sol();
    return 0;
}