Cod sursa(job #2142076)

Utilizator AndreiOffCovaci Andrei-Ion AndreiOff Data 24 februarie 2018 18:36:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define N_MAX 100001
#define M_MAX 1000001
using namespace std;

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

int n, m, s, dist[N_MAX];

bitset<N_MAX> viz;
vector<int> graf[N_MAX];

void citire(){

f>>n>>m>>s;
for(int i=1; i<=m; i++){

    int x, y;
    f>>x>>y;
    graf[x].push_back(y);

}

}

void bfs(int s){

queue<int> q;
q.push(s);
viz[s] = 1;
while(!q.empty()){

    int nod = q.front();
    q.pop();
    for(auto k:graf[nod])
        if(!viz[k]){

            dist[k]=dist[nod]+1;
            q.push(k);
            viz[k] = 1;

        }

}

for(int i=1; i<=n; i++)
    if(!viz[i] && i!=s)
        dist[i] = -1;

}

int main()
{

citire();
bfs(s);
for(int i=1; i<=n; i++){

    g<<dist[i]<<" ";

}
    return 0;
}