Cod sursa(job #2470087)

Utilizator bogdan_modoleaBogdan Modolea bogdan_modolea Data 8 octombrie 2019 18:09:36
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
#define NMAX 100001

using namespace std;
typedef long long ll;

string file="bfs";

ifstream fin(file+".in");
ofstream fout(file+".out");

vector<int>a[NMAX];
int distanta[NMAX],vizitat[NMAX],c[NMAX];

int n,m,s;

void bfs(int x){
    int p,u;
    p=u=1;
    c[1]=x;
    vizitat[x]=1; distanta[x]=0;
    while(p<=u){
        x=c[p++];
        for(auto i:a[x]){
            if(!vizitat[i]){
                distanta[i]=distanta[x]+1;
                vizitat[i]=1;
                c[++u]=i;
            }
        }
    }
}

int main()
{
    int i,x,y;
    fin>>n>>m>>s;
    for(i=1;i<=m;i++){
        fin>>x>>y;
        a[x].push_back(y);
    }
    bfs(s);
    for(i=1;i<=n;i++){
        if(vizitat[i]) fout<<distanta[i]<<" ";
        else fout<<"-1 ";
    }
    return 0;
}