Cod sursa(job #2832105)

Utilizator Pasca_DianaPasca Diana Valentina Pasca_Diana Data 12 ianuarie 2022 20:16:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,start[1000001],t[2][1000001],viz[1000001],c[1000001],nod,aux[1000001];
void lista()
{
    int i,k=0,x,y;
    f>>n>>m>>nod;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        k++;
        t[0][k]=y;
        t[1][k]=start[x];
        start[x]=k;
    }
}
void bfs(int a)
{
    int i,nrarce,ps=1,pf=1,p;
    viz[a]=1;
    c[ps]=a;
    while(ps<=pf)
    {
        nrarce=aux[c[ps]];
        p=start[c[ps]];
        while(p!=0)
        {
            if(viz[t[0][p]]==0)
            {
                pf++;
                c[pf]=t[0][p];
                viz[t[0][p]]=1;
                aux[t[0][p]]=nrarce+1;
            }
            p=t[1][p];
        }
        ps++;
    }
    for(i=1;i<=n;i++)
    {
        if(i==a)
            g<<"0 ";
        else
        {
            if(aux[i]==0)
                g<<"-1 ";
            else
                g<<aux[i]<<" ";
        }
    }
}
int main()
{
    int i;
    lista();
    bfs(nod);
    return 0;
}