Cod sursa(job #2809547)

Utilizator andreea13gaftonGafton Andreea andreea13gafton Data 27 noiembrie 2021 10:45:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

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

int n, m, s, p[100005];
vector <int>g[100005];
queue <int>q;

void citire()
{
     int x, y;
   fin>>n>>m>>s;
   for(int i=1; i<=n; ++i)
        p[i]=-1;
   for(int i=1; i<=m; ++i){
        fin>>x>>y;
        if(x!=y)
            g[x].push_back(y);

   }
   q.push(s);
   p[s]=0;
}

void nu_imi_merge_cb_ul()
{
   while(!q.empty())
    {
    int nod = q.front();
    for(auto &a:g[nod])
       if(p[a]==-1){
            p[a]=p[nod]+1;
            q.push(a);
        }
    q.pop();
   }
   for(int i=1; i<=n; ++i){
        fout<<p[i]<<' ';
   }
}

int main()
{
    citire();
    nu_imi_merge_cb_ul();
    return 0;
}