Cod sursa(job #3185333)

Utilizator Victor_9Diaconescu Victor Victor_9 Data 18 decembrie 2023 18:59:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
//bfs (ai grija daca e orientat sau nu)-> corect
#include <bits/stdc++.h>
using namespace std;

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

int N, M, S, i, j, a, b, pasi[100002], vis[100002];
vector<int>vecini[100002];

void bfs(int start){
    int st = 1, dr = 1;
    int x[100002];
    
    x[1] = start;
    pasi[start] = 0;
    
    while(st<=dr){
        
        int k = x[st];
        vis[k] = 1;
        
        for(auto i : vecini[k]){
            if(vis[i] == 0){
                pasi[i] = pasi[k] + 1;
                x[++dr] = i;
                vis[i] = 1;
            }
        }
        
        st++;
        
    }
    
    
}


int main()
{
   fin>>N>>M>>S;
   for(i=1;i<=M;i++){
       fin>>a>>b;
       vecini[a].push_back(b);
   }
   
   bfs(S);
   
   for(i=1;i<=N;i++){
        if(pasi[i]==0 && i!=S){
            fout<<-1<<" ";
        }else{
            fout<<pasi[i]<<" ";
        }
   }
    
}