Cod sursa(job #3336268)

Utilizator anto_vscAntonia Voinescu anto_vsc Data 24 ianuarie 2026 14:49:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.61 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;


//vector <int> L[100001];
//int viz[100001];
//
//
//
//void DFS(int x){
//
//    viz[x]=1;
//
//    for(auto vecin: L[x]){
//        if(!viz[vecin]){
//            viz[vecin]=1;
//            DFS(vecin);
//        }
//    }
//
//}
//
//
//int main(){
//    ifstream cin("dfs.in");
//    ofstream cout("dfs.out");
//
//    int n, m;
//    cin>>n>>m;
//
//    int comp=0;
//
//    for(int i=0; i<m; i++){
//        int x, y;
//        cin>>x>>y;
//        L[x].push_back(y);
//        L[y].push_back(x);
//    }
//
//    for(int i=1; i<=n; i++){
//        while(!viz[i]){
//            DFS(i);
//            comp++;
//        }
//    }
//
//    cout<<comp;
//
//    return 0;
//}

vector <int> L[100001];
int viz[100001];
queue <int> q;
int dist[100001];


void BFS(int x){

    dist[x]=0;
    viz[x]=1;
    q.push(x);

    while(!q.empty()){
        x=q.front();
        for(auto vecin: L[x]){
            if(!viz[vecin]){
                viz[vecin]=1;
                q.push(vecin);
                dist[vecin]=dist[x]+1;
            }
        }
        q.pop();
    }

}


int main(){

    ifstream cin("bfs.in");
    ofstream cout("bfs.out");

    int n,m,s;
    cin>>n>>m>>s;

    for(int i=1; i<=n; i++){
        dist[i]=-1;
    }

    for(int i=0; i<m; i++){
        int x,y;
        cin>>x>>y;
        L[x].push_back(y);
    }

    BFS(s);

    for(int i=1; i<=n; i++){
        cout<<dist[i]<<" ";
    }

    return 0;
}