Cod sursa(job #2718208)

Utilizator AlexZeuVasile Alexandru AlexZeu Data 8 martie 2021 16:21:12
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>
#define maxn 100010
using namespace std;
 
int N, M, L, Start;
vector <int> A[maxn];
int G[maxn], S[maxn], Cost[maxn];
 
void BFS(int nod) {
	L = 1;
	Cost[nod] = 0;
	S[L] = nod;
	for (int i = 1; i <= L; i++)	
		for (int j = 0; j < G[S[i]]; j++)
			if (Cost[A[S[i]][j]] == -1) {
				S[++L] = A[S[i]][j];
				Cost[S[L]] = Cost[S[i]] + 1;
		}
}	

int main() {
    cin.tie(0);
    ios::sync_with_stdio(0);
	cin >> N >> M >> L;
	for (int i = 1; i <= M; i++) {
		int x, y;;
		A[x].push_back(y);
	}
    for (int i = 1; i <= N; ++i) {
        Cost[i] = -1;
    }
	for (int i = 1; i <= N; i++) 
		G[i] = A[i].size();
	BFS(Start);
	for (int i = 1; i <= N; i++) 
		cout << Cost[i] << " ";
	return 0;
}