Cod sursa(job #1240925)

Utilizator PTAdrian64Pop-Tifrea Adrian PTAdrian64 Data 12 octombrie 2014 12:36:48
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>
#define nmv 100020
#include <queue>
#include <vector>
using namespace std;
long n,m,s;
long cost[nmv];
bool t[nmv];
queue < pair< long , long > > q;
vector < long > gr[nmv];


void read(){
   long x,y;
   while(m--){
      scanf("%ld %ld", &x, &y);
      gr[x].push_back(y);
   }
}
void print(){
  for(long i=1;i<=n;i++)
  {
      if(t[i]){
        printf("%ld ",cost[i]);
        continue;
      }
      printf("-1 ");
  }
  printf("\n");
}
int main(void){

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

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

  q.push(make_pair(s,0));
  while(!q.empty()){
     long ft,sd;
     ft=q.front().first;
     sd=q.front().second;
     t[ft]=1;cost[ft]=sd;
       q.pop();
     for(vector < long > :: iterator it=gr[ft].begin();it!=gr[ft].end();++it){
        if(!t[*it])
          q.push(make_pair(*it,sd+1));
     }

  }
   print();
}