Cod sursa(job #3191566)

Utilizator David8406Marian David David8406 Data 9 ianuarie 2024 23:31:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <queue>
#include <stack>
#include <climits>
#include <set>
#include <string>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> v[100005];
int viz[100005], dist[100005];
queue<int> q;
void bfs(int nod) {
    viz[nod] = 1;
    q.push(nod);
    while (!q.empty()) {
        int cr = q.front();
        q.pop();
        for (auto el : v[cr]) {
            if (!viz[el]) {
                viz[el] = 1;
                dist[el] = 1 + dist[cr];
                q.push(el);
            }
        }
    }
}
int main() {
	int n, m, st;
	fin >> n >> m >> st;
	for (int i = 1; i <= m; i++) {
		int x, y;
		fin >> x >> y;
		v[x].push_back(y);
	}
    bfs(st);
    for (int i = 1; i <= n; i++)
        if (i != st && dist[i] == 0) fout << -1 << " ";
        else fout << dist[i] << " ";
}