Cod sursa(job #2288952)

Utilizator q1e123Solca Robert-Nicolae q1e123 Data 24 noiembrie 2018 09:50:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#include <vector>
#include <queue>
#include <bitset>

using std::vector;
using std::queue;
using std::bitset;


const int MAX = 1000001;
int n,m,s,dist[MAX];
bitset <MAX> viz;
vector<int> G[MAX];
queue<int>q;
/*
void BFS(int node){
    for(auto i:G[node]){
        if(!viz[i]){
            printf("%d ",i);
            viz[i]=true;
        }
        BFS(i);
    }
}
*/


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

    scanf("%d %d %d",&n,&m,&s);

    for(int i=0;i<m;++i){
        int x,y;
        scanf("%d %d",&x,&y);
        G[x].push_back(y);
    }

    q.push(s);
    viz[s]=true;

    while(!q.empty()){
        int node=q.front();
        q.pop();
        for(auto i:G[node]) {
            if (!viz[i]) {
                viz[i] = true;
                q.push(i);
                dist[i]=dist[node]+1;
            }
        }
    }

    for(int i=1;i<=n;++i){
        if(dist[i] || i==s) printf("%d ",dist[i]);
        else printf("-1 ");
    }

    return 0;
}