Cod sursa(job #2253159)

Utilizator 3DwArDPauliuc Edward 3DwArD Data 3 octombrie 2018 18:34:07
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
vector< int > G[NMAX];
int n,m,sursa;
bitset <NMAX> b;
vector<int>dist(NMAX,INT_MAX);
ifstream f("bfs.in");
ofstream g("bfs.out");

void BFS(int x){
    b[x]=true;
    dist[x]=0;
    queue <int> q;
    q.push(x);
    while(!q.empty()){
        int node=q.front(); q.pop();
        for(auto it:G[node]){
            if(!b[it])
                {
                    q.push(it);
                    dist[it] = dist[node]+1;
                    b[it]=true;
                }
        }
    }
}
int main()
{
    f>>n>>m>>sursa;
    for(int i=1,x,y;i<=m;i++){
        f>>x>>y;
        G[x].push_back(y);
    }

    BFS(sursa);
    for(int i=1;i<=n;i++)
        g<< ((dist[i]==INT_MAX)? -1 : dist[i])<<" ";
    return 0;
}