Cod sursa(job #2479116)

Utilizator severutBogdan Sever-Cristian severut Data 23 octombrie 2019 11:41:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005

using namespace std;

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

vector <int> v[NMAX];
queue <int> q;
bool ap[NMAX];
int dist[NMAX];
int n,m,x,y,S;
int bfs(int S)
{
    q.push(S);
    ap[S]=true;
    dist[S]=0;
    while(!q.empty()){
        int fata=q.front();
        q.pop();
        for(auto i:v[fata]){
            if(!ap[i]){
                q.push(i);
                ap[i]=true;
                dist[i]=dist[fata]+1;
            }
        }
    }
}
int main()
{
    in>>n>>m>>S;
    for(int i=1;i<=m;++i){
        in>>x>>y;
        v[x].push_back(y);
    }
    for(int i=1;i<=n;++i)
        dist[i]=-1;
    bfs(S);
    for(int i=1;i<=n;++i)
        out<<dist[i]<<" ";
    return 0;
}