Cod sursa(job #2924214)

Utilizator Milka69Anastase Luca George Milka69 Data 27 septembrie 2022 11:15:24
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;

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

const int NMAX = 1e6+5;
vector<int>adj[NMAX];
int n, m, s;
int viz[NMAX];

inline int bfs(const int &x)
{
    queue<int>q;
    q.push(s);
    while(!q.empty())
    {
        if(q.front() == x)
            return viz[q.front()];
        for(auto idx : adj[q.front()])
            if(viz[idx] == 0 && idx!=s)
                q.push(idx), viz[idx] = viz[q.front()]+1;
        
        q.pop();
    }
    return -1;
}

inline void solve()
{
    for(int i=1;i<=n;++i)
    {
        cout << bfs(i) << ' ';
        memset(viz, 0, sizeof(viz));
    }
}

int main()
{
    cin >> n >> m >> s;
    int a, b;
    for(int i=1;i<=m;++i)
    {
        cin >> a >> b;
        adj[a].push_back(b);
    }
    solve();
}