Cod sursa(job #3155969)

Utilizator dotyzebra775Papuc Stefan dotyzebra775 Data 10 octombrie 2023 12:53:51
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
std::ifstream fin("graf.in");
const int NMAX = 105;
std::vector <int> G[NMAX + 1];
int vis[NMAX + 1];
int d[NMAX + 1];

void BFS(int x)
{
    std::queue<int> q;
    q.push(x);
    vis[x] = 1;
    d[x] = 0;
    while(!q.empty())
    {
        x = q.front();
        q.pop();
        std::cout << x << " ";
        for(auto next : G[x])
        {
            if(!vis[next])
            {
                vis[next] = 1;
                q.push(next);
                d[next] = d[x] + 1;
            }
        }
    }

}

int main()
{
    int n, m;
    int s;
    fin >> n >> m >> s;

    ///Liste de adiacenta
    for(int i = 1; i <= m; ++i)
    {
        int x, y;
        fin >> x >> y;
        G[x].push_back(y);
        //G[y].push_back(x);
    }
    
    BFS(s);
    std::cout << "\n";
    for(int i = 1; i <= n; ++i)
    {
        if(i == s)
            std::cout << 0 << " ";
        else if (d[i] == 0) 
            std::cout << -1 << " ";
        else
            std::cout << d[i] << " ";   
    }
    
    return 0;
}