Cod sursa(job #1701735)

Utilizator roxanaraduRoxana Radu roxanaradu Data 13 mai 2016 23:03:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include<queue>

using namespace std;

vector<int> *graf = new vector<int>[100005];
int *visit = (int*)calloc(100003, sizeof(int));
int *d = (int*)calloc(100003, sizeof(int));
vector<int> parcdfs;

void bfs(int s)
{
	queue<int> q;
	q.push(s);
	visit[s] = -1;
	d[s] = 0;
	while(!q.empty())
	{
		int u = q.front();
		q.pop();

		int add = 0;
		for(int i=0; i<graf[u].size();i++)
		{
			if(visit[graf[u][i]] == 0)
			{
				d[graf[u][i]] = d[u] + 1;
				q.push(graf[u][i]);
				visit[graf[u][i]] = 1;
				add++;
			}
		}
		visit[u] = 1;

	}
}
int main()
{
	ifstream f("bfs.in");
	ofstream g("bfs.out");
	int n, m, s;
	f >> n >> m >> s;
	int i;
	int x, y;

	for (i = 0; i < m; i++)
	{
		f >> x >> y;
		graf[x].push_back(y);
	}
	bfs(s);
	for(i=1;i<=n;i++)
		if(d[i] != 0)
			g<<d[i]<<" ";
		else
			if(i != s)
				g<<"-1 ";
			else
				g<<"0 ";
}