Cod sursa(job #2218713)

Utilizator cucustCucu Stefan cucust Data 5 iulie 2018 15:35:37
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMax = 100000;
int N,M,k;
vector <int> a[NMax];
int q[NMax],d[NMax];

void citeste(){
    in>>N>>M>>k;
    int x,y;
    for(int i=0; i<M; i++){
        in>>x>>y;
        a[x].push_back(y);
    }
}

void bfs(int Xo){
    int st = 0, dr = -1;
    q[++dr]=Xo;
    d[Xo]=0;
    int x,y;
    while(st<=dr){
        x = q[st++];
        for(int i=0; i<a[x].size(); i++){
            y = a[x][i];
            if(d[y]==-1){
                q[++dr]=y;
                d[y]=1+d[x];
            }
        }
    }
}
int main()
{
    citeste();
    memset(d,-1,sizeof(d));
    bfs(k);
    for(int i=1; i<=N; i++) out<<d[i]<<" ";
    return 0;
}