Cod sursa(job #2916389)

Utilizator AndreiMargaritMargarit Andrei AndreiMargarit Data 29 iulie 2022 16:18:44
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int a[1001][1001],viz[1001],n,m,i,l,c,s,b,nr=1,nradaug;
queue <int>q;

void bfs()
{
    while(!q.empty())
    {
        b=q.front();
        for(i=1;i<=n;i++)
        {
            if(a[b][i]==1&&viz[i]==0)
            {
                q.push(i);
                viz[i]=nr;
                nradaug++;
            }
        }
        nradaug--;
        if(nradaug==0)
        {
            nr++;
        }
        q.pop();
    }
}

int main()
{
    f>>n>>m>>s;
    for(i=1;i<=m;i++)
    {
        f>>l>>c;
        a[l][c]=1;
    }
    q.push(s);
    bfs();
    for(i=1;i<=n;i++)
    {
        if(viz[i]==0)
        {
            cout<<-1<<" ";
        }
        else
        {
            if(i==s)
            {
                cout<<0<<" ";
            }
            else
            {
                cout<<viz[i]<<" ";
            }
        }
    }
    return 0;
}