Cod sursa(job #2798027)

Utilizator MihaiBirsanMihai Birsan MihaiBirsan Data 10 noiembrie 2021 20:33:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

#define Nmax 100010

vector<int> v[Nmax];
int dist[Nmax];

void BFS(int start)
{
    int c[Nmax];
    int pr, ul;
    pr = 0;
    ul = -1;
    int n_curent;
    dist[start] = 0;
    c[++ul] = start;
    while(pr <= ul)
    {
        n_curent = c[pr++];
        for(auto i:v[n_curent]) //verificam toti vecinii nodului curent
            if(dist[i] == -1)
            {
                dist[i] = dist[n_curent] + 1;
                c[++ul] = i;
            }
    }
}

int main()
{
    int n,m,s,x,y;
    fin >> n >> m >> s;
    for(int i =1; i<= m; i++)
    {
        fin >> x >> y;
        v[x].push_back(y);
    }

    for(int i=1;i<=n;i++)
        dist[i] = -1;

    BFS(s);
    for(int i=1;i<=n;i++)
        fout<<dist[i]<<' ';
    return 0;
}