Cod sursa(job #3335765)

Utilizator panpanTrifan Antonia panpan Data 23 ianuarie 2026 14:56:07
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

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

using data = unsigned short;

int main()
{
    data startingNode, nodeNum, edgeNum, x, y;
    
    fin>>nodeNum>>edgeNum>>startingNode;

    std::vector<std::vector<data>> graph(nodeNum + 1);
    std::vector<short> distance(nodeNum, -1);

    std::queue<data> q;

    while (fin>>x>>y)
        graph[x].push_back(y);

    q.push(startingNode);
    distance[startingNode - 1] = 0;

    while (!q.empty())
    {
        data node = q.front();
        data dist = distance[node - 1] + 1;

        for (data neighbours : graph[node])
            if (distance[neighbours - 1] == -1)
            {
                q.push(neighbours);
                distance[neighbours - 1] = dist; 
            }
        q.pop();
    }

    for (short dist : distance)
        fout<<dist<<' ';

    fin.close();
    fout.close();

    return 0;
}