Cod sursa(job #3031147)

Utilizator 2080Cristian 2080 Data 18 martie 2023 21:04:01
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;

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

int n,m,visited[2000001]={0},val[2000001]={0},cnt = 0;
vector<vector<int>> l(2000001);
queue<int> q;



void dfs(int x){
    visited[x] = 1;
    for (const auto &item: l[x]) {
    if(visited[item]==0){
        dfs(item);
    }
    }
}

void bfs(int x){
    q.push(x);
    visited[x] = 1;
    val[x]=0;

    while(!q.empty())
    {
        int k = q.front();
        q.pop();

        for (const auto &item: l[k]) {
            if(visited[item] == 0){
             val[item] = val[k]+1;
             visited[item]=1;
             q.push(item);
            }
        }

    }
}

int main(){
    int k;
    fin>>n>>m>>k;
    for(int i = 1;i<=m;i++){
        int x,y;
        fin>>x>>y;
        l[x].push_back(y);

    }

    bfs(k);
    for (int i =1;i<=n;i++) {
        if(val[i]==0 && i!=k)
            fout<<-1<<" ";
        else
            fout<<val[i]<<" ";

    }


}