Cod sursa(job #3002192)

Utilizator BeneIonut2208Bene Ionut-Matei BeneIonut2208 Data 14 martie 2023 15:03:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

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

int n, m, start;
queue <int> Q;
vector <int> G[100005];
int c[100005], viz[100005];

void citire()
{
    fin >> n >> m >> start;
    for(int i = 1; i <= m; i++)
    {
        int x, y;
        fin >> x >> y;
        if(x != y)
            G[x].push_back(y);
    }
}

void bfs(int start)
{
    for(int i = 1; i <= n; i++)
        c[i] = -1;
    c[start] = 0;
    Q.push(start);
    viz[start] = 1;
    while(!Q.empty())
    {
        int x = Q.front();
        int l = G[x].size();
        for(int i = 0; i < l; i++)
        {
            if(!viz[G[x][i]])
            {
                Q.push(G[x][i]);
                c[G[x][i]] = c[x] + 1;
                viz[G[x][i]] = 1;
            }

        }
        Q.pop();

    }
}

void afisare()
{
    for(int i = 1; i <= n; i++)
        fout << c[i] << ' ';
}

int main()
{
    citire();
    bfs(start);
    afisare();
    return 0;
}