Cod sursa(job #636483)

Utilizator KaLoo1992Andrei Madalin KaLoo1992 Data 19 noiembrie 2011 20:43:57
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<stdio.h>
#include<vector>
#include<stdlib.h>
vector<int> vecini[100];
int list[100],li[100],sel[100],el_act,ult_el,nr=0,m=0;
void bf(int x){
     int nod;
     list[1]=x;
     sel[x]=1;
     el_act=1;ult_el=1;
     li[x]=nr;
     while(el_act<=ult_el){
        nod=list[el_act];nr++;
        for(int i=0;i<vecini[nod].size();i++){m++;
           if(!sel[vecini[nod][i]]){
              list[++ult_el]=vecini[nod][i];
              
              li[vecini[nod][i]]=nr;
              sel[vecini[nod][i]]=1;
           }}
        if(m==vecini[nod].size()) nr--;
        el_act++;
     }
}
void init(int n){
      for(int i=1;i<=n;i++)
        li[i]=-1;
}
int main(){
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    int nr;
    int n,m,s,x,y;
    scanf("%d",&n);scanf("%d",&m);scanf("%d\n",&s);
    for(int i=0;i<m;i++){
      scanf("%d",&x);scanf("%d\n",&y);
      vecini[x].push_back(y);
    }
        init(n);
       bf(s);
       for(int i=1;i<=n;i++){
        printf("%d ",li[i]);
       }
    return 0;
}