Cod sursa(job #1241050)

Utilizator PTAdrian64Pop-Tifrea Adrian PTAdrian64 Data 12 octombrie 2014 15:40:27
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
#define nmv 100020
#include <queue>
#include <vector>
#include <cstring>

using namespace std;
long long n,m,s;
long long cost[nmv];

queue < pair< long long , long long > > q;
vector < long long > gr[nmv];

void read(){
   long long x,y;
   while(m--){
      scanf("%lld%lld", &x, &y);
      gr[x].push_back(y);

   }
}
void print(){
  for(long long i=1;i<=n;i++)
  {
        printf("%lld ",cost[i]);

  }
  printf("\n");
}
int main(void){

  freopen("bfs.in", "r" ,stdin);
  freopen("bfs.out","w" ,stdout);

  memset(cost,-1,sizeof(cost));

  scanf("%lld%lld%lld", &n,&m,&s);
  read();

  q.push(make_pair(s,0));
  while(!q.empty()){
     long long ft,sd;
     ft=q.front().first;
     sd=q.front().second;
     cost[ft]=sd;

     for(vector < long long > :: iterator it=gr[ft].begin();it!=gr[ft].end();++it){
        if(cost[*it]==-1)
          q.push(make_pair(*it,sd+1));
     }
     q.pop();
  }
   print();
}