Cod sursa(job #2875527)

Utilizator fastlikearabbitDaniel Ghenghea fastlikearabbit Data 21 martie 2022 20:01:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int N, M, starting_node;
const int NMAX = 1000005;
vector<int> adj[NMAX];

int distances[NMAX];
queue<int> bfs_queue;

void read() {
    fin >> N >> M >> starting_node;
    for(int i = 1; i <= N; i++)
        distances[i] = -1;
    distances[starting_node] = 0;
    
    bfs_queue.push(starting_node);
    
    for(int i = 1; i <= M; i++) {
        int x, y;
        fin >> x >> y;
        adj[x].push_back(y);
    }
    
}
void bfs() {
    
    while(!bfs_queue.empty()) {
        int current = bfs_queue.front();
        bfs_queue.pop();
        
    for(auto neighbour : adj[current])
        if (distances[neighbour] == -1) {
            bfs_queue.push(neighbour);
            distances[neighbour] = distances[current] + 1;
        }
    }
}

void write() {
    for(int i = 1; i <= N; i++)
        fout << distances[i] << " ";
}
int main() {
        
    read();
    bfs();
    write();
    
    return 0;
}