Cod sursa(job #3296183)

Utilizator FlaviuuuFlaviu Flaviuuu Data 12 mai 2025 09:30:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
#define ll int
ll q[100005];
const int siz = 100005;
ll nrelemente = 0;
ll cntcurent = 0;
ll dist[100005];
bitset<siz> vis;
vector<vector<ll>> a(100005);
void bfs(ll nod)
{
    nrelemente++;
    q[nrelemente] = nod;
    vis[nod] = 1;
    ll t, i;
    while(cntcurent < nrelemente)
    {
        cntcurent++;
        t = q[cntcurent];
        for(i = 0; i < a[t].size(); i++)
        {
            if(vis[a[t][i]] == 0)
                q[++nrelemente] = a[t][i], dist[a[t][i]] = dist[t] + 1;
            vis[a[t][i]] = 1;
        }
    }
}
int main()
{
    ll n, m, x, y, s;
    cin>>n>>m>>s;
    for(int i = 1; i <= m; i++)
    {
        cin>>x>>y;
        a[x].push_back(y);
    }
    bfs(s);
    for(int i = 1; i <= n; i++)
    {
        if(vis[i] == 0)
            cout<<"-1"<<" ";
        else
            cout<<dist[i]<<" ";
    }
    return 0;
}