Cod sursa(job #2544542)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 12 februarie 2020 10:58:18
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>
#include <vector>
#include <queue>
#define verticesMax 101024

using namespace std;

int vertices,roads[verticesMax];
int startingVertice;
vector <int> graph[verticesMax];
queue <int> q;

void mset() {
    int i;
    for(i=0;i<verticesMax;++i) {
        roads[i]=-1;
    }
}

void read() {
    int i,edges,v1,v2;
    scanf("%d%d%d",&vertices,&edges,&startingVertice);
    --startingVertice;
    for(i=0;i<edges;++i) {
        scanf("%d%d",&v1,&v2);
        --v1;
        --v2;
        graph[v1].push_back(v2);
    }
}

void solve() {
    int vert;
    roads[startingVertice]=0;
    for(q.push(startingVertice);!q.empty();q.pop()) {
        vert=q.front();
        for(auto i:graph[vert]) {
            if(roads[i]<0) {
                roads[i]=roads[vert]+1;
                q.push(i);
            }
        }
    }
}

void display() {
    int i;
    for(i=0;i<vertices;++i) {
        printf("%d ",roads[i]);
    }
}

int main() {
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    mset();
    read();
    solve();
    display();
    return 0;
}