Cod sursa(job #2281826)

Utilizator urweakurweak urweak Data 12 noiembrie 2018 19:43:32
Problema BFS - Parcurgere in latime Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <bitset>
#include <queue>
using namespace std;

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

bitset <1000> muchii[1000];
queue <int> coada;

int n, m, s, distanta[1000];

void BFS()
{
    int nod, vecin;
    while(!coada.empty())
    {
        nod = coada.front();
        coada.pop();
        for(int i = 1; i<=n; i++)
        {
            vecin = muchii[nod][i];
               if(distanta[i] == -1 && vecin)
               {
                   distanta[i] = distanta[nod] + 1;
                   coada.push(i);
               }

        }
    }
}

void citire()
{
    fin >> n >> m >> s;
    for(int i = 1; i<=m; i++)
    {
        int x, y;
        fin >> x >> y;
        muchii[x][y] = 1;
    }

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

    distanta[s] = 0;
    coada.push(s);
    BFS();
        for(int i = 1; i<=n; i++)
        {
      fout << distanta[i] <<' ';
        }

}

int main()
{
    citire();
}