Cod sursa(job #3151602)

Utilizator andiRTanasescu Andrei-Rares andiR Data 21 septembrie 2023 23:41:20
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <iomanip>
#include <vector>
#include <bitset>

#pragma GCC optimize("O3")
#define fi first
#define se second
#define pb push_back
#define pf push_front

using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
typedef long long ll;
const ll Nmax=1e5+5, inf=1e9+5;
using pii=pair<int, int>;

int n, m, s;
vector <int> ad[Nmax];
int vis[Nmax];

queue <pii> q;
int main()
{
    fin>>n>>m>>s;
    int a, b;
    for (int i=0; i<m; i++){
        fin>>a>>b;
        ad[a].pb(b);
    }
    q.push({s, 1});
    vis[s]=1;
    while (!q.empty()){
        auto crt=q.front();
        q.pop();
        for (auto it:ad[crt.fi])
            if (vis[it]==0){
                vis[it]=crt.se+1;
                q.push({it, crt.se+1});
            }
    }
    for (int i=1; i<=n; i++)
        fout<<vis[i]-1<<' ';
    return 0;
}