Cod sursa(job #641639)

Utilizator AnaTudorTudor Ana Maria Mihaela AnaTudor Data 28 noiembrie 2011 23:17:20
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <cstdlib>
#include <iostream>
#include<vector>

using namespace std;

vector<int> muchii[100001];
int sel[100001];

void bf(int nod_sursa ,int numar_noduri)
{
     vector<int> coada_bf;
     coada_bf.push_back(nod_sursa);
     int element_actual=0;
     sel[nod_sursa]=1;

     while( element_actual< coada_bf.size())
       {  int nod_actual=coada_bf[element_actual];
          int nr_vecini= muchii[nod_actual].size();
          for(int j=0;j < nr_vecini; ++j)
           { if (sel[muchii[nod_actual][j]]==0)
              coada_bf.push_back(muchii[nod_actual][j]);
              sel[muchii[nod_actual][j]]=sel[nod_actual]+1;
            }
            ++element_actual;
       }
}


int main()
{ int numar_noduri,nr_muchii,nod_sursa;
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d %d %d", &numar_noduri,&nr_muchii,&nod_sursa);
   int prima,destinatie;
    for( int i=1;i<=nr_muchii;i++)
     { scanf("%d% d", &prima,&destinatie);
         muchii[prima].push_back(destinatie);
        }
        bf(nod_sursa,numar_noduri);
     for (int j=1;j<=numar_noduri;j++)
        printf("%d ",sel[j]);


    return 0;
}