Cod sursa(job #2819889)

Utilizator claudiu.draghitadraghita claudiu claudiu.draghita Data 19 decembrie 2021 12:53:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
#include <queue>
#define lim 1000005
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int nod,muchii,nodstart;
vector <int> m[lim];
queue <int> coada;
int dist[lim];

void bfs(){
    while(!coada.empty()){
        int n = coada.front(); // iau varful
        coada.pop();
        for(unsigned int i = 0; i < m[n].size(); ++i){
            int v = m[n][i];
            if(dist[v] == -1)
            {
                coada.push(v);
                dist[v] = dist[n] + 1;
            }
        }
    }
}
int main(){
    in >> nod >> muchii >> nodstart;
    for (int i = 1; i <= muchii; ++i) {
        int x, y;
        in >> x >> y;
        m[x].push_back(y);
    }
    for(int i = 1; i <= nod; ++i)
        dist[i] = -1;
    dist[nodstart] = 0;
    coada.push(nodstart);
    bfs();
    for(int i = 1; i <= nod; ++i)
        out << dist[i] << " ";
}