Cod sursa(job #1815977)

Utilizator msciSergiu Marin msci Data 25 noiembrie 2016 23:15:37
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

struct Node {
	int dist;
	vector<int> adj;

};

Node V[100005];

int N, M, S;

int main() {
#ifndef DEBUG
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);
#endif
	scanf("%d %d %d", &N, &M, &S);
	S--;

	for (int i = 0; i < N; i++) {
		V[i].dist = -1;

	}
	for (int i = 0; i < M; i++) {
		int a, b;
		scanf("%d %d", &a, &b);
		a--; b--;
		V[a].adj.push_back(b);

	}

	vector<int> q;
	V[S].dist = 0;
	q.push_back(S);

	for (int i = 0; i < (int) q.size(); i++) {
		int k = q[i];
		for (int j = 0; j < (int) V[k].adj.size(); j++) {
			int current = V[k].adj[j];
			if (V[current].dist >= 0) continue;
			V[current].dist = V[k].dist + 1;
			q.push_back(current);

		}


	}
	for (int i = 0; i < N; i++) {
		printf("%d ", V[i].dist);

	}
	printf("\n");

}