Cod sursa(job #2841825)

Utilizator Undergamerrotariu dragos Undergamer Data 30 ianuarie 2022 15:10:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n,m,c;
vector <int>a[100002];
int v[100002];
queue <int> Q;
void BFS (int nod)
{
    if (Q.empty()==0)
    {
        for (int i=0;i<a[nod].size();i++)
        {
            if (v[a[nod][i]]==0)
            {
                Q.push(a[nod][i]);
                v[a[nod][i]]=v[nod]+1;
            }
        }
        Q.pop();
        BFS(Q.front());
    }
}
int main ()
{
    cin>>n>>m>>c;
    for (int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y;
        a[x].push_back(y);
    }
    v[c]=1;
    Q.push(c);
    BFS(c);
    for (int i=1;i<=n;i++)
    {
        if (v[i]==0)
            cout<<"-1"<<" ";
        else
            cout<<v[i]-1<<" ";
    }
}