Cod sursa(job #3318532)

Utilizator pierdcasaPislariu Mario pierdcasa Data 28 octombrie 2025 13:06:38
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <vector>
#include <queue>
#include <limits>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

vector<int> G[100001];
bool viz[100001];
int D[100001];
queue <int> Q;

int n,m;

void dfs(int nod) {
    viz[nod]=1;
    for (int vecin:G[nod]) {
        if (!viz[vecin])
            dfs(vecin);
    }
}

void bfs(int start) {

    for(int i=1;i<=n;++i)
        D[i]=-1;
    D[start]=0;
    Q.push(start);
    while(!Q.empty())
    {
        int nod=Q.front();
        Q.pop();
        for (int vecin:G[nod])
        {   if (D[vecin]==-1)
            {
             D[vecin]=D[nod]+1;
             Q.push(vecin);
            }
        }
    }
}
int main() {
    int s;
    f>>n>>m>>s;
    for (int i=0;i<m;++i) {
        int x,y;
        f>>x>>y;
        G[x].push_back(y);
    }
   /*
    int ok=0;
    for (int i=1;i<=n;++i) {
        if (!viz[i]) {
            ++ok;
            dfs(i);
        }
    }

    g<<ok<<"\n";
    */
    bfs(s);
    for(int i=1;i<=n;++i)
    {   g<<D[i]<<" ";
    }
    return 0;
}