Cod sursa(job #3277930)

Utilizator costelus18Catalin Dohotaru costelus18 Data 18 februarie 2025 03:41:43
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string>
#include <sstream>
using namespace std;

int N, M, S;
vector<vector<int>> adjList(N + 1);
vector dist(N + 1, -1);

void solve() {
    dist[S] = 0;
    queue<int> bfsQueue;
    bfsQueue.push(S);
    while (!bfsQueue.empty()) {
        int current = bfsQueue.front();
        bfsQueue.pop();
        for (int neigh : adjList[current]) {
            if (dist[neigh] == -1) {
                bfsQueue.push(neigh);
                dist[neigh] = dist[current] + 1;
            }
        }
    }
}

void readInput() {
    ifstream input("bfs.in");
    input >> N >> M >> S;
    for (int i = 0; i < M; ++i) {
        int from, to;
        input >> from >> to;
        adjList[from].push_back(to);
    }
    input.close();
}

void writeOutput() {
    ofstream output("bfs.out");
    for (int i = 1; i <= N; ++i) {
        output << dist[i] << " ";
    }
    output.close();
}

int main() {
    readInput();
    solve();
    writeOutput();
    return 0;
}