Cod sursa(job #1801499)

Utilizator DevilOnFieldTudor Horia Niculescu DevilOnField Data 9 noiembrie 2016 08:55:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

FILE *in, *out;

vector <int> g[100005];
int d[100005];

queue <int> cbf;

int sta;

int main ()
{
	int n, m;
	in = fopen("bfs.in", "r");
	out = fopen("bfs.out", "w");
	fscanf(in, "%d%d%d", &n, &m, &sta);

	for(int i = 1; i <= m; i++) {
		int x, y;
		fscanf(in, "%d%d", &x, &y);
		g[x].push_back(y);
	}
	cbf.push(sta);
	d[sta] = 1;
	while(!cbf.empty()) {
		int x = cbf.front();
		cbf.pop();

		for(int i = 0; i < g[x].size(); i++) {
			if(d[g[x][i]] ==  0) {
				d[g[x][i]] = d[x] + 1;
				cbf.push(g[x][i]);
			}
		}
	}
	for(int i = 1; i <= n; i++) {
		fprintf(out, "%d ", d[i] - 1);
	}
	fclose(in);
	fclose(out);
	return 0;
}