Cod sursa(job #2483592)

Utilizator XXMihaiXX969Gherghinescu Mihai Andrei XXMihaiXX969 Data 29 octombrie 2019 22:16:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

const int DIM = 1e5 + 7;

vector <int> v[DIM];

int que[DIM];
int viz[DIM];

void bfs(int S)
{
    viz[S] = 0;
    int st = 1;
    int dr = 1;
    que[1] = S;
    while(st <= dr)
    {
        for(int i = 0; i < v[que[st]].size(); i++)
        {
            if(viz[v[que[st]][i]] == -1)
             {
                 dr++ ;
              que[dr] = v[que[st]][i];
              viz[v[que[st]][i]] = viz[que[st]] + 1;
             }
        }
      st++;
    }

}
int main()
{
    int n, m, S;
    in >> n >> m >> S;

    while(m--)
    {
        int x,y;
        in >> x >> y;
        v[x].push_back(y);
    }

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

    bfs(S);

    for(int i = 1; i <= n; i++)
        out << viz[i] <<" ";


    return 0;
}