Cod sursa(job #2925343)

Utilizator bogdan.schiopBogdan Schiop bogdan.schiop Data 14 octombrie 2022 19:28:23
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

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

int viz[10001];
int dist[10001];
int n, m, s;
int a[10001][10001];

void citire()
{
    fin >> n >> m >> s;
    int aux1, aux2;
    for(int i = 1; i <= m ; i++)
    {
        fin >> aux1 >> aux2;
        a[aux1][aux2]= 1;
    }
    for(int i = 1 ; i <= n ; i++)
        dist[i] = -1;
}

deque<int> q;

void BFS()
{
    q.push_back(s);
    viz[s] = 1;
    dist[s] = 0;
    while(!q.empty())
    {
        for(int i = 1; i <= n ; i++)
        {
            if(a[q.front()][i] == 1 && !viz[i])
            {
                q.push_back(i);
                viz[i] = 1;
                dist[i] = dist[q.front()]+1;
            }
        }
        q.pop_front();
    }
}

int main()
{
    citire();
    BFS();
    for(int i = 1 ; i <= n ; i++)
        fout << dist[i] << ' ';
    return 0;
}