Cod sursa(job #2831040)

Utilizator Goia_DariusGoia Darius Goia_Darius Data 10 ianuarie 2022 18:53:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int T[2][2000005],n,m,st,Start[100005],k,viz[100005],c[100005];
int d[100005],prim,ultim;
void Citire()
{
    int i,j,k=0;
    f>>n>>m>>st;
    while (f>>i>>j)
    {
        k++;
        T[0][k]=j;
        T[1][k]=Start[i];
        Start[i]=k;
    }
    d[st]=0;
}
void bfs(int start)
{
    int p,contor=0;
    c[prim]=start;
    viz[start]=1;
    d[start]=0;
    while(prim<=ultim)
    {
        contor=d[c[prim]];
        p=Start[c[prim]];
        while(p)
        {
            if(viz[T[0][p]]==0)
            {
                d[T[0][p]]=contor+1;
                ultim++;
                c[ultim]=T[0][p];
                viz[T[0][p]]=1;
            }
            p=T[1][p];
        }
        prim++;
    }
}
int main()
{
    Citire();
    bfs(st);
    for(int i=1;i<=n;i++)
    {
        if(d[i]==0 && i!=st) g<<"-1"<<" ";
        else g<<d[i]<<" ";
    }
    return 0;
}