Cod sursa(job #3149463)

Utilizator addanciuAdriana Danciu addanciu Data 8 septembrie 2023 18:47:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <unordered_map>
#include <stack>
#include <queue>
#define clear(Q) while (!(Q).empty()) (Q).pop()
//#define CONSOLE /// daca ai in consola
#define int long long
using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");
 
#ifdef CONSOLE
    #include <iostream>
    #define fin cin 
    #define fout cout 
#endif
const int MAXN=100005;
vector<int>G[MAXN];
queue<int>Q;
int d[MAXN], pred[MAXN],n;
void bfs(int x){
    d[x]=0;
    Q.push(x);
    while(!Q.empty()){
        int y=Q.front();
        Q.pop();
        for(int j=0;j<G[y].size();j++){
            if(d[G[y][j]]==-1){
                d[G[y][j]]=d[y]+1;
                Q.push(G[y][j]);
            }
        }
    }
}
signed main() {
    int m,x,a,b;
    fin>>n>>m>>x;
    for(int i=1;i<=n;i++)
        d[i]=-1;
    for (int i=1;i<=m;i++) {
        fin>>a>>b;
        G[a].push_back(b);
    }
    bfs(x);
    for(int i=1;i<=n;i++) fout<<d[i]<<" ";
    return 0;
}