Cod sursa(job #3337205)

Utilizator Mariusq17Ignat Marius Florentin Mariusq17 Data 27 ianuarie 2026 01:28:50
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
// #include <iostream>
// #include <fstream>
// #include <vector>
#include <bits/stdc++.h>

using namespace std;

// ifstream fin("dfs.in");
// ofstream fout("dfs.out");

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

void bfs(int startNode, vector<vector<int>>& adj, vector<int>& visited, vector<int>& dist) {
    queue<int> q;
    
    visited[startNode] = 1;
    dist[startNode] = 0;
    q.push(startNode);

    while(!q.empty()) {
        int u = q.front();
        q.pop();

        for(int vecin : adj[u]) {
            if(!visited[vecin]) {
                visited[vecin] = 1;
                dist[vecin] = dist[u] + 1;

                q.push(vecin);
            }
        }
    }

}

int main() {
    int N, M, s;
    fin >> N >> M >> s;

    // Initializare liste de adiacenta si vector vizitat
    vector<vector<int>> adj(N + 1);
    vector<int> dist(N + 1, -1);
    vector<int> visited(N + 1, 0);

    // Citire muchii
    for(int i = 0; i < M; i++) {
        int x, y;
        fin >> x >> y;
        adj[x].push_back(y);
        //adj[y].push_back(x); // Graf neorientat
    }

    bfs(s, adj, visited, dist);

    for(int i = 1; i <= N; i++) {
        fout << dist[i] << " ";
    }

    return 0;
}