Cod sursa(job #3339606)

Utilizator OnetIoanaOnet Ioana OnetIoana Data 9 februarie 2026 10:21:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> b[100100];
queue <int> q;
int start,n,m,xx,y,x,nr,pred[100101],z,i,j;
void afis(int q, int nr)
{
    if(pred[q]!=-1)
    {
        nr++;
       afis(pred[q],nr);
    }
    else
    {
        g<<nr<<" ";
    }
}

void bf(int start)
{
    q.push(start);
    pred[start]=-1;
    while(!q.empty())
    {
        x=q.front();
        z=b[x].size();
        for(i=0;i<z;i++)
        {
            if(pred[b[x][i]]==0 )
            {
                q.push(b[x][i]);
                pred[b[x][i]]=x;
            }
        }
        q.pop();
    }
}
int main()
{
    f>>n>>m>>xx;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        if(x!=y)
        {
           b[x].push_back(y);
        }

    }
    for(i=1;i<=n;i++)
    {
        sort(b[i].begin(),b[i].end());
    }
    bf(xx);

for(i=1;i<=n;i++)
{nr=0;
if(pred[i]!=0)
    afis(i,nr);
    else
    {
        g<<"-1 ";
    }
}
    return 0;
}