Cod sursa(job #943432)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 25 aprilie 2013 14:17:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <cstdio>
#include <vector>
#include <queue>
#define nmax 100005
using namespace std;

int n,m,k;
vector <int> v[nmax];
queue <int> q;
int dist[nmax];

int main() {
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&k);
	for (int i=1;i<=m;i++) {
		int a,b;
		scanf("%d %d",&a,&b);
		v[a].push_back(b);
	}
	dist[k] = 1;
	q.push(k);
	while (!q.empty()) {
		int crt = q.front(); q.pop();
		while (!v[crt].empty()) {
			int x = v[crt].back(); v[crt].pop_back();
			if (!dist[x]) {
				dist[x] = dist[crt] +1;
				q.push(x);
			}
		}
	}
	for (int i=1;i<=n;i++) printf("%d ",dist[i]-1);
	return 0;
}