Cod sursa(job #1805954)

Utilizator RaresEGaySopterean Adrian RaresEGay Data 14 noiembrie 2016 18:25:56
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n, m, l, start;
int len[100], coada[100], cost[100];
vector <int> a[100];

int bfs(int nod){
    int i, j;
    for(int i=1; i<=n; ++i) cost[i] = -1;

    l=1;
    cost[nod] = 0;
    coada[l] = nod;

    for(int i=1; i<=l; ++i){
        for(int j=0; j < len[coada[i]]; ++j){
            if(cost[a[coada[i]][j]] == -1){
                coada[++l] = a[coada[i]][j];
                cost[coada[l]] = 1 + cost[coada[i]];

            }
        }
    }

}


int main(){
    f >> n >> m >> start;
    for(int i=1; i<=m; ++i){
        int x, y;
        f >> x >> y;
        a[x].push_back(y);
    }
    for(int i=1; i<=n; ++i){
        len[i] = a[i].size();
    }

    bfs(start);
    for(int i=1; i<=n; ++i){
        g << cost[i] << ' ';
    }
    g << '\n';
}