Cod sursa(job #3300602)

Utilizator Benjamin4321234Benjamin Secara Benjamin4321234 Data 17 iunie 2025 18:46:00
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define MAXX 1000001
int n,m,k,x,y;
queue<pair<int,int>> q;
vector<int> v[100001];
bool vizitat[100001];
int drumuri[100001];

void bfs(int m){
    q.push({m,0});
    vizitat[m]=1;
    drumuri[m]=0;
    while(!q.empty()){
        int x=q.front().first;
        int drum=q.front().second;
        q.pop();
        drumuri[x]=min(drumuri[x],drum);
        for(auto u:v[x]){
            if(!vizitat[u]){
                vizitat[u]=1;
                q.push({u,drum+1});
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(drumuri[i]!=MAXX){
            fout<<drumuri[i];
        }
        else{
            fout<<-1;
        }
        fout<<" ";
    }
}

int main()
{
    fin>>n>>m>>k;
    for(int i=1;i<=m;i++){
        fin>>x>>y;
        v[x].push_back(y);
    }
    for(int i=1;i<=n;i++){
        drumuri[i]=MAXX;
    }
    bfs(k);

    return 0;
}