Cod sursa(job #1359070)

Utilizator bogobatBerbece Daniel bogobat Data 24 februarie 2015 21:11:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <stdio.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
#define MAX 100009
int n,m,drum[MAX];

struct nod{int a; nod * urm;};

nod * graf[MAX];
int coada[MAX];
nod * i;
int viz[MAX];
void adaugare(int x, int y){

   nod *p = new nod;
   p->a = y;
   p->urm = graf[x];
   graf[x]=p;

}
void bfs(int st){
int prim=0;int ultim=0;
coada[prim]=st;
drum[st]=1;
   while(prim<=ultim ){
      i=graf[coada[prim]];
      prim++;
      for(*i;i!= NULL;i=i->urm){
       if(drum[i->a]==0){coada[++ultim]=i->a;
                        drum[i->a]=drum[coada[prim-1]]+1;
      }}
   }
}

int s,x,y;
int main()
{

    in>>n>>m>>s;
    for(int i=1;i<=m;i++){
        in>>x>>y;
        adaugare(x,y);
    }


    bfs(s);
    for(int i=1;i<=n;i++){out<< drum[i]-1<< " ";}
    return 0;

}