Cod sursa(job #3215513)

Utilizator Victor_9Diaconescu Victor Victor_9 Data 15 martie 2024 08:55:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5 + 5;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int n, m, s, x, y, h[nmax], vis[nmax];
vector < int > adj[nmax];
queue < int > q;

void bfs(int node){
    
    h[node] = 0;
    vis[node] = 1;
    q.push(node);
    
    while(!q.empty()){
        
        int k = q.front();
        q.pop();
        for(auto elem : adj[k]){
            if(vis[elem] == 0){
                q.push(elem);
                vis[elem] = 1;
                h[elem] = h[k] + 1;
            }
        }
        
    }
    
}

int main()
{
    fin>>n>>m>>s;
    for(int i=1;i<=m;i++){
        fin>>x>>y;
        adj[x].push_back(y); // - ai grija daca e orientat sau nu
    }
    
    h[s] = 0;
    bfs(s);
    
    for(int i=1;i<=n;i++){
        if(h[i] == 0 && i != s){
            fout<<-1<<" ";
        }else{
            fout<<h[i]<<" ";
        }
    }
    
    
}