Cod sursa(job #2576289)

Utilizator Liviu_Ionut_MoantaMoanta Ionut Liviu Liviu_Ionut_Moanta Data 6 martie 2020 18:20:26
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s,a,b,i,j,nr,k,fiu,t,minim;
vector<int>L[100005];
int sol[100005],D[100005],maxim[100005];
void dfs(int nod){
    sol[nod]=1;
    for(int i=0;i<L[nod].size();i++){
        int fiu=L[nod][i];
        if(sol[fiu]==0){
            if(1+D[nod]<=D[fiu]){
                D[fiu]=1+D[nod];
            }
            dfs(fiu);
        }
    }
}
int main(){
    fin>>n>>m>>s;
    for(i=1;i<=m;i++){
        fin>>a>>b;
        L[a].push_back(b);
    }
    for(i=1;i<=n;i++){
        D[i]=1000005;
    }
    D[s]=0;
    dfs(s);
    for(i=1;i<=n;i++){
        if(D[i]==1000005){
            fout<<"-1"<<" ";
            continue;
        }
        fout<<D[i]<<" ";
    }
    return 0;
}