Cod sursa(job #2907905)

Utilizator dgivanDan Grigore Ivan dgivan Data 31 mai 2022 22:01:30
Problema BFS - Parcurgere in latime Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include<iostream>
#include<set>
#include<algorithm>
#include <vector>
#include <fstream>
#include <cstring>
#include <map>
#include <math.h>
#include <queue>

using namespace std;

int n, m, s;
vector<int> v[100111];
vector<int> viz(100111);
vector<int> dist(100111);

int main (){
    
    ifstream cin ("bfs.in");
    ofstream cout ("bfs.out");
    
    cin >> n >> m >> s;

    for (int i = 1; i<=m; i++){
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
    }

   queue<int> q;
    q.push(s);
    viz[s] = 1;
    dist[s] = 0;
    while (!q.empty()){
        int nod = q.front();
        q.pop();
        for (int i = 0; i<v[nod].size(); i++){
            int vecin = v[nod][i];
            if (!viz[vecin]){
                q.push(vecin);
                dist[vecin] = dist[nod]+1;
                viz[vecin] = 1;
            }
        }
    }

    for (int i = 1; i<=n; i++){
        if (!viz[i]){
            cout << -1 << " ";
        }
        else {
            cout << dist[i] << " ";
        }
    }
}