Cod sursa(job #2907024)

Utilizator Ungureanu_EduardUngureanu Eduard Mihai Ungureanu_Eduard Data 28 mai 2022 14:52:33
Problema BFS - Parcurgere in latime Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<int>a[100001];
queue<int>q;
int n,m,s,x,y;
int c[100001],d[100001];

void citire()
{
    in>>n>>m>>s;
    for (int i=1; i<=m; i++){
        in>>x>>y;
        a[x].push_back(y);
    }
}

void afisare()
{
    for (int i=1; i<=n; i++){
        if (i!=s){
            if (d[i]==0) d[i]=-1;
        }
        out<<d[i]<<" ";
    }
}

void bfs(int nod){
    d[nod]=0;
    c[nod]=1;
    q.push(nod);
    while (!q.empty()){
        int x=q.front();
        for (int i=0; i<a[x].size(); i++){
            if (c[a[x][i]]==0){
                q.push(a[x][i]);
                c[a[x][i]]=1;
                d[a[x][i]]=d[x]+1;
            }
        }
        q.pop();
    }
}

int main()
{
    citire();
    bfs(s);
    afisare();
}