Cod sursa(job #2959365)

Utilizator DemonulCristian Razvan Gavrilescu Demonul Data 30 decembrie 2022 20:12:05
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int const sizeMax=100002;
int n;
int parcurs[sizeMax];
vector <int> a[sizeMax];
queue  <int> que;
void bfs()
{

    while(que.empty() == false)
    {
        int nod = que.front();
        que.pop();
        for(int i = 0; i < a[nod].size(); i ++)
        {
            int el = a[nod][i];
            if(parcurs[el] == -1)
            {
                parcurs[el] = parcurs[nod] + 1;
                que.push(el);
            }
        }
    }
}
int main()
{
   int m , k;
   cin >> n >> m >> k;
   int i;
   for(i = 1 ; i <= m; i ++)
   {
       int x , y;
       cin >> x >> y;
       a[x].push_back(y);
   }
   for(i = 1; i <= n; i++)
   {
     parcurs[i] = -1;
   }
   parcurs[k] = 0;
   que.push(k);
   bfs();
   for(i = 1; i <= n; i ++)
   {
       cout << parcurs[i] << " ";
   }
    return 0;
}