Cod sursa(job #2422296)

Utilizator Rufus007Marincia Catalin Rufus007 Data 18 mai 2019 12:56:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<vector>
#include<cstring>
#include<queue>

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

const int maxn = 100010;
int N, M, Start;

vector<int> A[maxn];
int vizite[maxn], Cost[maxn];

void BFS(int nod) {
	memset(Cost, -1, sizeof(Cost));
	queue<int> coada;
	coada.push(nod);
	Cost[nod] = 0;
	vizite[nod] = 1;

	while (!coada.empty()) {
		int v = coada.front();
		coada.pop();

		for (int i = 0; i < A[v].size(); ++i)
			if (vizite[A[v][i]] == 0) {
				coada.push(A[v][i]);
				Cost[A[v][i]] = Cost[v] + 1;
				vizite[A[v][i]] = 1;
			}
	}

}

int main() {
	fin >> N >> M >> Start;
	for (int i = 0; i < M; ++i) {
		int x, y;
		fin >> x >> y;
		A[x].push_back(y);
	}
//	for(int i=1;i<=N;++i)
//		G[i]=A[i].size();
	BFS(Start);


	for (int i = 1; i <= N; ++i)
		fout << Cost[i] << ' ';
	fin.close();
	fout.close();
	return 0;
}