Cod sursa(job #3243431)

Utilizator ReithoferCarlaReithofer Carla ReithoferCarla Data 18 septembrie 2024 17:42:33
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

vector < vector <int> > v;
queue <int> vecini;

int dist[100001];

void bfs(int nod_start) {
    vecini.push(nod_start);
    dist[nod_start] = 1;
    while(!vecini.empty()) {
        int nod_crt = vecini.front();
        vecini.pop();
        for(auto vec:v[nod_crt])
            if(!dist[vec]) {
                dist[vec] = dist[nod_crt] + 1;
                vecini.push(vec);
            }
    }
}
int main() {

    int n, m, nod_start;
    cin >> n >> m >> nod_start;

    v.resize(n+1);

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

    bfs(nod_start);

    for(int i = 1; i <= n ; i++) {
        if(i==nod_start) cout << 0 << ' ';
        else if(dist[i]==0) cout << -1 << ' ';
        else cout << dist[i]-1 << ' ';
    }
    return 0;
}