Cod sursa(job #2433935)

Utilizator AlexBolfaAlex Bolfa AlexBolfa Data 29 iunie 2019 20:32:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
#define MAX (int)(1e5+5)
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

vector <int> Edge[MAX];
queue <int> Q;
int n,S,Dist[MAX];
bool Used[MAX];

void read();
void bfs(int);
void print();

int main(){
    read();
    bfs(S);
    print();
    return 0;
}
void print(){
    int i;
    for(i=1;i<=n;++i){
        if(Dist[i]==0 && i!=S)
            Dist[i]=-1;

        fout<<Dist[i]<<' ';
    }
}
void bfs(int S){
    int i,x;
    Q.push(S);
    Used[S]=1;

    while(!Q.empty()){
        x=Q.front();
        Q.pop();

        for(auto it: Edge[x]){
            if(!Used[it]){
                Used[it]=1;
                Dist[it]=Dist[x]+1;
                Q.push(it);
            }
        }
    }
}
void read(){
    int i,m,x,y;
    fin>>n>>m>>S;

    for(i=0;i<m;++i){
        fin>>x>>y;
        Edge[x].push_back(y);
    }
}