Cod sursa(job #2391403)

Utilizator AlexiaPaunescu100Alexia Paunescu AlexiaPaunescu100 Data 28 martie 2019 20:17:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
 
 
 
void addEdge(vector<int> adj[], int u, int v)
{
	adj[u].push_back(v);
}
 
 
int main()
{
	ifstream inFile;
	inFile.open("bfs.in");
	int N, M, S;
	inFile >> N >> M >> S;
	vector<int> *adj = new vector<int>[N+1];
	int *dist = new int[N + 1];
	for (int i = 1; i <= N; i++)
	{
		dist[i] = -1;
	}
	pair<int, int> edge;
	for (int i = 0; i < M; ++i)
	{
		inFile >> edge.first >> edge.second;
		addEdge(adj, edge.first, edge.second);
	}
	inFile.close();
	queue<int> nods;
	nods.push(S);
	dist[S] = 0;
	while (nods.empty() == false)
	{
		int temp = nods.front();
		nods.pop();
		for (auto it : adj[temp])
		{
			if (dist[it] != -1) continue;
			if (dist[it] == -1)
			{
				dist[it] = 0;
			}
			dist[it] = dist[temp] + 1;
			nods.push(it);
		}
	}
	ofstream outFile;
	outFile.open("bfs.out");
	for (int i = 1; i <= N; i++)
	{
		outFile << dist[i] << ' ';
	}
	outFile.close();
	delete[] adj;
	return 0;
}