Cod sursa(job #641720)

Utilizator yamahaFMI Maria Stoica yamaha Data 29 noiembrie 2011 11:39:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <stdio.h>
#include<vector>

using namespace std;

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

void bf(int,int);

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]-1);

    return 0;
}

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;
       }
}