Cod sursa(job #2550079)

Utilizator PatriciaCretoiuCretoiu Patricia PatriciaCretoiu Data 18 februarie 2020 13:00:37
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int nmax=1e5+5;
int N, M, X, i, x, y, d[nmax];
vector<int>G[nmax];
bitset<nmax>viz;
queue<int>Q;
void bfs(int nod)
{
    Q.push(nod);
    viz[nod] = 1;
    while(!Q.empty())
    {
        nod=Q.front();
        vector<int>::iterator it;
        for(it=G[nod].begin(); it<G[nod].end(); it++)
            if(!viz[*it])
            {
                d[*it]=d[nod]+1;
                viz[*it]=1;
                Q.push(*it);
            }
        Q.pop();
    }
}

int main()
{
    in >> N >> M >> X;
    for(i=1; i<=M; i++)
    {
        in >> x >> y;
        G[x].push_back(y);
    }
    bfs(X);
    for(i=1; i<=N; i++)
        if(i==X)
            out << "0 ";
        else if(d[i])
            out << d[i] << " ";
        else
            out << "-1 ";
}