Cod sursa(job #1705307)

Utilizator KaliNarcisa Vasile Kali Data 20 mai 2016 11:44:45
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <utility> 
#include <queue>

typedef unsigned int uint;
using namespace std;

int main() {
	
	ifstream in("bfs.in");
	ofstream out("bfs.out");
	int n, m, s;
	in >> n >> m >> s;
	vector < pair<int, int> > arce;
	vector <vector <int> > vecini(n+1, vector<int>());
	int x, y;
	for (int i = 0; i < m; ++i) {
		in >> x >> y;
		vecini[x].push_back(y);
		arce.push_back(make_pair(x, y));
	}
	vector<int> visited(n+1, 0);
	visited[s] = 1;
	queue<int> q;
	q.push(s);
	vector<int> cost(n+1, 0);
	while(!q.empty()) {
		x = q.front();
		q.pop();
		for (uint i = 0; i < vecini[x].size(); ++i){
			if (visited[vecini[x][i]] == 0) {
				q.push(vecini[x][i]);
				visited[vecini[x][i]] = 1;
				cost[vecini[x][i]] = cost[x] + 1;
			}
		}
	}
	for(int i = 1; i <= n; ++i)
		if (visited[i] == 0)
			cost[i] = -1;
	for (int i = 1; i <= n; ++i)
		out << cost[i] << " ";
	return 0;
}