Cod sursa(job #2855160)

Utilizator tiut_cristianTiut Cristian tiut_cristian Data 22 februarie 2022 10:33:06
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m, s;

struct node
{
    vector<int> vecini;
    bool vizitat;
}v[100001];


void citire()
{
    fin >> n >> m >> s;
    for(int i = 1; i <= m; i++)
    {
        int a, b;
        fin >> a >> b;
        v[a].vecini.push_back(b);
    }
}

void recursiv(int nod, int nrArce[])
{
    v[nod].vizitat = true;
    for(auto &i : v[nod].vecini)
        if( !v[i].vizitat )
        {
            v[i].vizitat = true;
            nrArce[i] = nrArce[nod] + 1;
            recursiv(i, nrArce);
        }
}

void afisare(int n, int nrArce[])
{
    for(int j = 1; j <= n; j++)
        fout << nrArce[j] << ' ';
}

void initializare(int n, int nrArce[])
{
    for(int i = 1; i <= n; i++)
        nrArce[i] = -1;
}

int main()
{
    citire();
    int nrArce[n+1];
    initializare(n, nrArce);
    nrArce[s] = 0;
    recursiv(s, nrArce);
    afisare(n, nrArce);
     return 0;
}