Cod sursa(job #2423725)

Utilizator mihai.badilaBadila Mihai mihai.badila Data 21 mai 2019 21:32:45
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>

using namespace std;

int main()
{
	list<int> graph[100001];
	int nodes, edges, source;
	ifstream f("bfs.in");
	f >> nodes >> edges >> source;
	
	for (int i = 0; i < edges; i++)
	{
		int a, b;
		f >> a >> b;
		graph[a].push_back(b);
	}
	
	f.close();

	int vis[100001];
	int dis[100001];
	for (int i = 1; i <= nodes; i++)
	{
		vis[i] = 0;
		dis[i] = -1;
	}

	list<int> queue;
	queue.push_back(source);
	dis[source] = 0;
	vis[source] = 1;
	
	while (!queue.empty())
	{
		int index = queue.front();
		queue.pop_front();
		for(auto it:graph[index])
		{
			int x = it;
			if (vis[x] == 0)
			{
				queue.push_back(x);
				dis[x] = dis[index] + 1;
				vis[x] = 1;
			}
		}
	}

	ofstream g("bfs.out");
	for (int i = 1; i <= nodes; i++)
		g << dis[i] << " ";
	g.close();

}