Cod sursa(job #2829683)

Utilizator Paul0516Berindeie Paul Paul0516 Data 8 ianuarie 2022 20:55:19
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

queue <int> c;

struct
{
    int viz, val;
}fr[300001];

int start[300001], t[2][300001];

int main()
{
    int n, m, k, a, b, z = 0, nr, con = 1;
    f >> n >> m >> k;
    for (int i = 1; i <= m; i++)
    {
        f >> a >> b;
        z++;
        t[0][z] = b;
        t[1][z] = start[a];
        start[a] = z;
    }
    c.push(k);
    fr[k].viz = 1;
    while (c.empty() == 0)
    {
        nr = start[c.front()];
        while (nr != 0)
        {
            if (fr[t[0][nr]].viz == 0)
            {
                c.push(t[0][nr]);
                fr[t[0][nr]].val = con;
                fr[t[0][nr]].viz = 1;
            }
            nr = t[1][nr];
        }
        c.pop();
        con++;
    }
    for (int i = 1; i <= n; i++)
    {
        if (fr[i].val==0 && i!=k)
            g << -1 <<" ";
        else
            g <<fr[i].val<<" ";
    }
    return 0;
}