Cod sursa(job #1705048)

Utilizator kittDenisa kitt Data 19 mai 2016 20:46:05
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

#define NMAX 100001

using namespace std;

vector<int> adjList[NMAX];
int dist[NMAX];
int parent[NMAX];
int n, m, s;

void BFS(int root) {
	for (int i = 1; i <= n; ++i) {
		dist[i] = -1;
		parent[i] = -1;
	}
	dist[root] = 0;
	queue<int> Q;
	Q.push(root);
	while(!Q.empty()) {
		int nod = Q.front();
		Q.pop();
		for (int i = 0; i < adjList[nod].size(); ++i) {
			if (dist[adjList[nod][i]] == -1) {
				dist[adjList[nod][i]] = dist[nod] + 1;
				parent[adjList[nod][i]] = nod;
				Q.push(adjList[nod][i]);
			}
		}
	}
}

int main() {
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);
	int a, b;
	cin >> n >> m >> s;
	for (int i = 0; i < m; ++i) {
		cin >> a >> b;
		adjList[a].push_back(b);
	}

	BFS(s);

	for(int i = 1; i <=n; ++i) {
		cout << dist[i] << " ";
	}


}