Cod sursa(job #1340293)

Utilizator cociorbaandreiAndrei Cociorba cociorbaandrei Data 11 februarie 2015 18:56:12
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include "string.h"
#include <queue>
#include <vector>
#include "stdio.h"
using namespace std;
int n, m, s, c[100010];
vector<vector<int> > lista(100010);
std::queue<int> q;
int main()
{
	memset(c, -1, sizeof(c));
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);

	scanf("%d %d %d",&n,&m,&s);

	for (int i = 1; i <= m; ++i)
	{
		int t1, t2;
		scanf("%d %d", &t1, &t2);
		lista[t1].push_back(t2);
	}
 	

	
	q.push(s);
   	c[s] = 0;

	while(!q.empty()){
		int currentNode = q.front();
		q.pop();
		for (std::vector<int>::iterator i = lista[currentNode].begin(); i != lista[currentNode].end(); ++i)
		{
			if(c[*i] == -1){
				q.push(*i);
				c[*i] = c[currentNode] + 1;
			}
		}
	}

	for (int i = 1; i <= n; ++i)
		printf("%d\n", c[i]);
	return 0;
}