Cod sursa(job #2762963)

Utilizator stefanvoicaVoica Stefan stefanvoica Data 10 iulie 2021 15:18:01
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout("bfs.out");
int n,m,tata[100002],coada[100002],nr;
vector<int>v[100002];
bool viz[100002];

void bfs (int node)
{
    viz[node]=1;
    int st=1,dr=1;
    coada[1]=node;
    while (st<=dr)
    {
        int nod=coada[st];
        for (auto x:v[nod])
            if (viz[x]==0)
        {
            viz[x]=1;
            coada[++dr]=x;
            tata[x]=nod;
        }
        ++st;
    }
}

int numara (int k,int dest)
{
    if (k==dest)
        return 0;
    else    return 1+numara(tata[k],dest);
}

int main()
{
    int x,y,i,k;
    fin>>n>>m>>k;
    for (i=1;i<=m;i++)
    {
        fin>>x>>y;
        v[x].push_back(y);
    }
    bfs (k);
    for (i=1;i<=n;++i)
    {
        if (viz[i]==0)
            fout<<-1<<' ';
        else    fout<<numara(i,k)<<' ';
    }
    return 0;
}