Cod sursa(job #2403607)

Utilizator Leonard123Mirt Leonard Leonard123 Data 11 aprilie 2019 18:50:09
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include<vector>
using namespace std;
#define maxn 100010
vector <int> vecini[maxn];
int cost[maxn],nr[maxn],lista[maxn],start,M,N;

void solve(){
    for(int i=1; i<=N; i++){
        cost[i]=-1;
    }
    int p=1;
    lista[p]=start;
    cost[start]=0;
    for(int u=1; p>=u; u++)
        for(int i=0; i<nr[lista[u]]; i++)
            if(cost[vecini[lista[u]][i]]==-1){
                lista[++p]=vecini[lista[u]][i];
                cost[lista[p]]=cost[lista[u]]+1;
        }

}

int main()
{
    cin>>N>>M>>start;
    int x,y;
    for(int i=1; i<=M; i++){
        cin>>x>>y;
        vecini[x].push_back(y);
    }
    for(int i=1; i<=N; i++){
        nr[i]=vecini[i].size();
    }
    solve();
    for(int i=1; i<=N; i++)
        cout<<cost[i]<<' ';
}