Cod sursa(job #2924683)

Utilizator BBazzyRenato BBazzy Data 8 octombrie 2022 14:08:13
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("dfs.in");

int vizitat[10001];
vector<int> la[10001];
vector<int> coada;


int main()
{
    int n,m,s,u;
    int x,y;
    f>>n>>m>>s;
    while(f>>x>>y)
    {
        la[x].push_back(y);
    }

    coada.push_back(s);
    vizitat[s]=1;

    int distanta[10001]= {};
    distanta[s]=0;
    while(coada.size()!=0)
    {

        u=coada.front();/// scot din coada primul nod
        coada.erase(coada.begin());
        for(int j=0; j<la[u].size(); j++) /// merg pe toti vecinii lui cei mai apropiati
            if(vizitat[la[u][j]]==0)
        {
            distanta[la[u][j]]=distanta[u]+1;
                coada.push_back(la[u][j]);
                vizitat[la[u][j]]=1;

            }
    }
    for(int i=1; i<=n; i++) /// daca nu se poate ajunge la nodul respectiv
        if(distanta[i]==0 and i!=s)
            distanta[i]=-1;

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

}