Cod sursa(job #1705050)

Utilizator kittDenisa kitt Data 19 mai 2016 20:48:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
#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() {
	FILE *in, *out;
	in = fopen("bfs.in", "r");
	out = fopen("bfs.out", "w");
	int a, b;
	fscanf(in, "%d%d%d", &n, &m, &s);
	for (int i = 0; i < m; ++i) {
		fscanf(in, "%d%d", &a, &b);
		adjList[a].push_back(b);
	}

	BFS(s);

	for(int i = 1; i <=n; ++i) {
		fprintf(out, "%d ", dist[i]);
	}


}