Cod sursa(job #358752)

Utilizator sapiensCernov Vladimir sapiens Data 24 octombrie 2009 13:12:47
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream in; ofstream out;
vector <long> a[100001],c;
long b[100001],N,M,S;

int main () {
    in.open ("bfs.in"); out.open ("bfs.out");
    in>>N>>M>>S;
    long i,j,k;
    for (i=1; i<=M; i++) {
        in>>j>>k;
        a[j].push_back (k);
    }
    for (i=1; i<=N; i++) b[i]=-1;
    c.push_back (S);
    b[S]=0;
    while (c.size ()) {
          i=c.at (0);
          for (j=0; j<a[i].size (); j++) {
              k=a[i].at (j);
              if (b[k]==-1) {
                 b[k]=b[i]+1;
                 c.push_back (k);
              }
          }
          c.erase (c.begin (), c.begin ()+1);
    }
    for (i=1; i<=N; i++) out<<b[i]<<" ";
    out<<"\n";
    in.close (); out.close ();
    return 0;
}