Cod sursa(job #1536096)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 25 noiembrie 2015 18:13:07
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<queue>
#include<vector>
#include<fstream>
using namespace std;
ifstream fi("bfs.in");
ofstream fo("bfs.out");

const int MAX_N = 100005;

vector <int> a[MAX_N];
int i,n,m,x,y,nod_start,d[MAX_N];

void bfs(int nod_start, int d[]){
     queue <int> q;
     
     for(int i=1;i<=n;i++) d[i] = -1;
     q.push(nod_start); d[nod_start] = 0;
     
     while(!q.empty()){ 
          int x = q.front();
          q.pop();
          
          for(unsigned int j=0;j<a[x].size();j++)
            if(d[a[x][j]] == -1){
                                 int y = a[x][j];
                                 d[y] = d[x] + 1;
                                 q.push(y);
                                }
     }
}

int main(){
    fi>>n>>m>>nod_start;
    for(i=1;i<=m;i++){
                      fi>>x>>y;
                      a[x].push_back(y); 
                     }
    
    bfs(nod_start, d);
    
    for(i=1;i<=n;i++) fo<<d[i]<<" "; 
    
    fi.close();
    fo.close();
    return 0;
}