Cod sursa(job #2683589)

Utilizator Un.wiseApetrei George Un.wise Data 11 decembrie 2020 17:21:18
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#define maxn 100010

using namespace std;

int N, M, S, X,Y;
int C[maxn];

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

vector<int> v[maxn];
queue<int> q;

void BFS(int nod) {
	int i, j;

	for (int i = 0; i <= N; i++) {
		C[i] = -1;

	}
	//memset(C, -1, sizeof(C));

	C[nod] = 0;
	q.push(nod);


	while( q.size()){
		nod = q.front();
		q.pop();

		for (int f = 0; f < v[nod].size(); f++) {
			//adaugam ce nu am vizitat in q si calculam pretul

			int vecin = v[nod][f];
			if (C[vecin] == -1) {

				C[vecin] = C[nod] + 1;
				q.push(vecin);
			}
		}
	}

}


int main() {

	in >> N >> M >> S;

	for (int i = 1; i <= M; ++i) {

		in >> X >> Y;
		v[X].push_back(Y);
	}
	BFS(S);

//afisare
	for (int i = 1; i <= N; ++i) {
	

		out << C[i]<< " ";
		

	}


	in.close();
	out.close();
	return 0;
}