Cod sursa(job #1801937)

Utilizator eilerGabriel-Ciprian Stanciu eiler Data 9 noiembrie 2016 18:34:05
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int n, m, s, c[100000], cost[100000];
bool v[100000];
vector <int> a[100000];

int main(){
	int i, j, k, l, o;

	fstream f;
	f.open("bfs.in", ios_base::in);
	f >> n >> m >> s; s--;
	for (k=0; k<m; k++){
		f >> i >> j;
		i--; j--;
		a[i].push_back(j);
	}
	f.close();

	i=j=0; v[s]=true; cost[s]=0; c[0]=s;
	while (i<=j){
		l=c[i];
		for (k=0; k<int(a[l].size()); k++){
			o=a[c[i]][k];
			if (v[o]==false){
				j++;
				c[j]=o;
				cost[o]=cost[l]+1;
				v[o]=true;
			}
		}
		i++;
	}

	f.open("bfs.out", ios_base::out);
	for (i=0; i<n; i++)
		if (cost[i]==0 && i!=s)
			f << "-1 ";
		else if (cost[i]==0 && i==s)
			f << "0 ";
		else
			f << cost[i] << ' ';
	f << '\n';
	f.close();

	return 0;
}