Cod sursa(job #1170832)

Utilizator sorin2kSorin Nutu sorin2k Data 14 aprilie 2014 17:57:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#include<queue>
#include<vector>
using namespace std;

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

int n, m, s, viz[100000], dist[100000];
vector<int> adj[100001];

void bfs(int s) {
	queue<int> q;
	int current;
	q.push(s);
	viz[s] = 1;
	dist[s] = 0;
	while(!q.empty()) {
		current = q.front();
		q.pop();
		for(vector<int>::iterator it = adj[current].begin(); it != adj[current].end(); ++it) {
			if(viz[*it] == 0) {
				viz[*it] = 1;
				dist[*it] = 1 + dist[current];
				q.push(*it);
			}
		}
	}
}

int main() {
	int i, u, v;
	fin >> n >> m >> s;
	for(i = 0; i < m; i++) {
		fin >> u >> v;
		u--, v--;
		adj[u].push_back(v);
	}
	for(i = 0; i < n; i++) dist[i] = -1;
	bfs(s-1);
	for(i = 0; i < n; i++) {
		fout << dist[i] << " ";
	}
	return 0;
}