Cod sursa(job #2871015)

Utilizator AnastasiaStefanescuAnastasia Stefanescu AnastasiaStefanescu Data 12 martie 2022 19:55:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <iostream>
#include <math.h>
#include <set>
#include <queue>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");

int coada[100001], f[100001], n, m;

vector <int> l[100001];

void bfs(int nod)
{
int p, u, x, i;
u = p = 1;
coada[p] = nod;
f[nod] = 1;
while (p <= u)
{
    x = coada[p];
    for (i = 0; i< l[x].size(); i++)
    if(f[l[x][i]] == 0)
    {
        u++;
        coada[u] = l[x][i];
        f[l[x][i]] = f[x] + 1;
    }
    p++;
}
}

int main()
{
int i, k, x, y;
fin >> n >> m >> k;

for (i = 1; i<= m; i++)
{
    fin >> x >> y;
    l[x].push_back(y);
}
bfs(k);

for (i =1; i<= n; i++)
if(i != k)
{
    if(f[i] > 0)
        fout << f[i] - 1 << " ";
    else
        fout << "-1 ";
}
else
    fout << "0 ";

}