Cod sursa(job #2249233)

Utilizator marcudanfDaniel Marcu marcudanf Data 29 septembrie 2018 14:51:35
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
#define INF 2000000

using namespace std;

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

vector < int > g[NMAX];
queue < int > q;
bool viz[NMAX];
int d[NMAX];

int n, m, s;

int main(){
	fin >> n >> m >> s;
	for(int i = 0; i < m; i++){
		int x, y;
		fin >> x >> y;
		g[x].push_back(y);
	}
	fin.close();
	for(int i = 0; i < n; i++)
		d[i] = INF;
	q.push(s);
	d[s] = 0;
	while(!q.empty()){
		int x = q.front();
		q.pop();
		viz[x] = 1;
		for(int i = 0; g[x][i]; i++){
			if(!viz[g[x][i]]){
				q.push(g[x][i]);
				d[g[x][i]] = d[x] + 1;
			}
		}
	}
	for(int i = 1; i <= n; i++){
		if(d[i] == INF)
			fout << "-1 ";
		else
			fout << d[i] << " ";
	}
	fout << '\n';
	fout.close();
	return 0;
}