Cod sursa(job #2569688)

Utilizator XXMihaiXX969Gherghinescu Mihai Andrei XXMihaiXX969 Data 4 martie 2020 13:12:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda r3capitusulare Marime 1.07 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

const int DIM =1e5 + 7;

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

queue <int> q;

vector <int> l[DIM];


int d[DIM];
bool viz[DIM];

void bfs(int x)
{
     q.push(x);
     viz[x] = true;
     d[x] = 0;
    while(!q.empty())
    {
        int nod = q.front();
        q.pop();

        for(int i = 0 ;i < l[nod].size();i++)
        {
            int vec = l[nod][i];

            if(viz[vec] == false)
            {
                q.push(vec);
                d[vec] = d[nod] + 1;
                viz[vec] = true;
            }
        }
    }
}

int main()
{

   int n, m , x;

   in >> n >> m >> x;

   for(int i = 1 ; i <= m; i++)
   {
       int a, b;
       in >> a >> b;

       l[a].push_back(b);

   }

   bfs(x);

   for(int i = 1; i <= n; i++)
   {
       if(i == x)
        out << 0 <<" ";
       else
       if(d[i] == 0)
       out << -1 <<" ";
       else
        out << d[i]<<" ";
   }
    return 0;
}