Cod sursa(job #2979112)

Utilizator SamurayxJackDiaconescu Octavian SamurayxJack Data 14 februarie 2023 19:37:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;
#define NMAX 100001

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

int n,m,viz[NMAX],p;
queue<int>Q;
vector<int>A[NMAX];

void read(){
    int x,y;
    fin>>n>>m>>p;
    for(int i=1;i<=m;i++){fin>>x>>y;A[x].push_back(y);}
}

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

void BFS(int x){
viz[x]=0;
Q.push(x);
while(!Q.empty()){
    x=Q.front();
    Q.pop();
    for(auto i:A[x]){
        if(viz[i]==-1) viz[i]=viz[x]+1,Q.push(i);
    }
}
}

int main(){
    read();
    setx();
    BFS(p);
    for(int i=1;i<=n;i++) fout<<viz[i]<<" ";
    return 0;
}
/*
5 7 2
1 2
2 1
2 2
3 2
2 5
5 3
4 5
*/