Cod sursa(job #3322303)

Utilizator g.vladGociu Vlad g.vlad Data 13 noiembrie 2025 13:25:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb

#include <fstream>
#include <vector>
#include <queue>

std::ifstream in("bfs.in");
std::ofstream out("bfs.out");

void bfs(std::vector<unsigned>* graph, long long* distance, unsigned entry) {
    std::queue<unsigned> queue;

    distance[entry] = 0;

    for(queue.push(entry); !queue.empty(); queue.pop()) {
        for(unsigned node : graph[queue.front()]) if( distance[node] == -1 ) {
            distance[node] = distance[queue.front()] + 1;
            queue.push(node);
        }
    }
}

int main() {
    unsigned nodes, edges, target;

    in >> nodes >> edges >> target;

    std::vector<unsigned> graph[100001];

    unsigned a, b;
    for(unsigned edge = 0; edge < edges; edge += 1) {
        in >> a >> b;
        graph[a].push_back(b);
    }

    long long distance[100001];
    for(unsigned node = 1; node <= nodes; node += 1) distance[node] = -1;

    bfs(graph, distance, target);

    for(unsigned node = 1; node <= nodes; node += 1) {
        out << distance[node] << ' ';
    }
}