Cod sursa(job #870748)

Utilizator TeOOOVoina Teodora TeOOO Data 3 februarie 2013 21:11:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <stdio.h>
#include <queue>
#include <vector>
using namespace std;

//Constante
const int sz = (int)1e5 + 1;

//Variabile
FILE *in, *out;

int nodes, edges, source;
int dist[sz];

vector<int> graph[sz];
queue<int> myQ;

int main()
{
	in=fopen("bfs.in","rt");
	out=fopen("bfs.out","wt");

	fscanf(in, "%d%d%d",&nodes, &edges, &source);

	for(int i=1;i<=edges;i++)
	{
		int vFrom, vTo;
		fscanf(in, "%d%d",&vFrom, &vTo);
		graph[vFrom].push_back(vTo);
	}

	myQ.push(source);
	dist[source] = 1;

	while(!myQ.empty())
	{
	    int node = myQ.front();
	    myQ.pop();

	    vector <int>:: iterator it, end = graph[node].end();

	    for(it = graph[node].begin(); it!=end; ++it)
	    {
	        if(!dist[*it])
	        {
	            dist[*it] = dist[node] + 1;
	            myQ.push(*it);
	        }
	    }
	}

	for(int i=1; i<=nodes; ++i)
        fprintf(out,"%d ", dist[i] - 1);

	fclose(in);
	fclose(out);
	return 0;
}