Cod sursa(job #2240516)

Utilizator mihaimusat.1998Musat Mihai-Robert mihaimusat.1998 Data 13 septembrie 2018 17:33:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <vector>
#include <queue>

#define NMAX 100000+5

int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    int numberOfNodes,numberOfEdges,source;
    std::vector<int> Graph[NMAX];
    int Dist[NMAX];
    std::queue<int> Queue;

    scanf("%d %d %d",&numberOfNodes,&numberOfEdges,&source);
    for(int i=0;i<=numberOfNodes;i++)
        Dist[i]=-1;
    for(int i=0;i<numberOfEdges;i++) {
        int x,y;
        scanf("%d %d",&x,&y);
        Graph[x].push_back(y);
    }

    Queue.push(source);
    Dist[source]=0;

    while(!Queue.empty()) {
        int x=Queue.front();
        Queue.pop();
        for(int y : Graph[x]) {
            if(Dist[y]==-1) {
                Dist[y]=Dist[x]+1;
                Queue.push(y);
            }
        }
    }
    for(int i=1;i<=numberOfNodes;i++)
        printf("%d ",Dist[i]);
    return 0;
}