Cod sursa(job #2224459)

Utilizator theoioanaTheodoraD theoioana Data 24 iulie 2018 02:01:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
#define DIM 100010

using namespace std;

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

int main() {

	int n, m, s;
	fin >> n >> m >> s;

	vector <int> adjaency[DIM];

	int visited[DIM], distances[DIM], current[DIM];
	int x, y;

	for (int i = 1; i <= m; i++) {
		fin >> x >> y;
		adjaency[x].push_back(y);
	}

	for (int i = 1; i <= n; i++) {
		sort(adjaency[i].begin(), adjaency[i].end());
	}

	current[1] = s;
	visited[s] = 1;
	distances[s] = 1;
	int p = 1;
	int u = 1;
    int nod, neigh;
	while (p <= u) {
		nod = current[p];
		for (int i = 0; i < adjaency[nod].size(); i++) {
			neigh = adjaency[nod][i];
			if (visited[neigh] == 0) {
				visited[neigh] = 1;
				current[++u] = neigh;
				distances[neigh] = 1 + distances[nod];
			}
		}
		p ++;
	}

	for (int i = 1; i <= n; i++) {
		if (distances[i] == 0) {
			fout << -1 << " ";
			continue;
		}
		fout << -1 + distances[i] << " ";
	}

	//system("pause");

	return 0;
}