Cod sursa(job #3341348)

Utilizator NonnonsniperCretu Marian-Dumitru Nonnonsniper Data 19 februarie 2026 08:25:58
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> a(1,0);

void bfs(int N, vector<vector<int>> &mat,int S,int M){
    for(int i=0;i<N;i++){
        if(i==S){ 
            a[i]=0; continue; 
        }
        vector<bool> visited(N,false);
        queue<pair<int,int>> q;
        q.push({i,0});
        visited[i]=true;
        bool gasit=false;

        while(!q.empty()){
            int curr=q.front().first;
            int dist=q.front().second;
            q.pop();

            if(curr==S){
                a[i]=dist;
                gasit=true;
                break;
            }

            for(int j:mat[curr]){
                if(!visited[j]){
                    visited[j]=true;
                    q.push({j,dist+1});
                }
            }
        }

        if(!gasit) a[i]=-1;
    }

    for(auto x:a) fout<<x<<" ";
}

int main(){
    int N,M,S;
    fin>>N>>M>>S;
    a.resize(N);
    S--;

    vector<vector<int>> adj(N);

    for(int i=0;i<M;i++){
        int a,b;
        fin>>a>>b;
        adj[b-1].push_back(a-1);
    }

    bfs(N,adj,S,M);
}