Cod sursa(job #2710717)

Utilizator AnastasiaStefanescuAnastasia Stefanescu AnastasiaStefanescu Data 22 februarie 2021 22:03:54
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb

//  probleme2018-2019

#include <fstream>
#include <iostream>
#include <math.h>
#include <set>
#include <queue>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");

int coada[1001], f[1001], n, m, a[1001][1001];

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 ";
    
}