Cod sursa(job #715312)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 16 martie 2012 23:46:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
                                                     
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

long N[100001] = {0};
//vector<int> M[100000];
vector<int> *M;

int main(void)
{
 fstream fin("bfs.in",ios::in);
 fstream fout("bfs.out",ios::out);
 long Noduri,Muchii,Sursa,i,a,b;
 M = new vector<int>[100001];
 pair<int,int> *c;
 fin >> Noduri >> Muchii >> Sursa;
 for (i = 0;i < Muchii;i += 1)
  {
   fin >> a >> b;
   M[a].push_back(b);
  }
 queue<pair<int,int> *> q;
 q.push(new pair<int,int>(Sursa,1));
 N[Sursa] = 1;
 while (q.empty() == 0)
  {
   c = q.front();
   q.pop();
   for (i = 0;i < M[c->first].size();i += 1)
    {
     if ((N[M[c->first].at(i)] <= 0) && (M[c->first].at(i) != Sursa))
       {
        q.push(new pair<int,int>(M[c->first].at(i),c->second + 1));
        N[M[c->first].at(i)] = c->second + 1;
       }
    }
  }
 for (i = 1;i <= Noduri;i += 1)
  {
   fout << (N[i] - 1) << " ";
  }
 fin.close();
 fout.close();
 return 0;
}