Cod sursa(job #1865287)

Utilizator Mstar_AngelComan Mara Stefania Mstar_Angel Data 1 februarie 2017 17:21:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<stdio.h>
#include<vector>
#define NMAX 100001
using namespace std;
vector <int> v[NMAX];
int stiv[NMAX];
int viz[NMAX];
int main (){
  FILE *in,*out;
  in = fopen ("bfs.in","r");
  out = fopen ("bfs.out","w");
  int n,m,nods,i,a,b,inc,sf,nod;
  fscanf(in,"%d%d%d",&n,&m,&nods);
  for (i=1;i<=m;i++){
    fscanf(in,"%d%d",&a,&b);/// muchie a -> b
    v[a].push_back (b);
  }

  for (i=1;i<=n;i++)
    viz[i] = -1;

  inc = sf = 1;
  viz[nods] = 0;
  stiv[inc] = nods;
  while (inc <= sf){///stiva nu e goala
    nod = stiv[inc];
    for (vector <int>::iterator it=v[nod].begin(); it != v[nod].end(); ++it){
      /// iterare prin vecinii lui "nod"
      if (viz[*it] == -1){
        viz[*it] = viz[nod] + 1;///pt calc lung
        stiv[++sf] = *it;
        ///prev[*it] = nod;
        ///lung[*it] = lung[nod] + 1;
      }
    }
    inc ++;
  }

  for (i=1;i<=n;i++)
    fprintf(out,"%d ",viz[i]);

  fclose(in);
  fclose(out);
  return 0;
}