Cod sursa(job #2423522)

Utilizator AlexBlagescuBlagescu Alex George AlexBlagescu Data 21 mai 2019 17:23:57
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#define inf 1<<24
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

int main()
{
	int n, m;
	f >> n >> m;

	vector <vector <pair<int, int> > > Graph(n+1);
	vector <int> d(n+1, inf);
	set <pair <int, int> > M;

	for (int i = 1; i <= m; i++) {
		int x, y, cost;
		f >> x >> y >> cost;
		Graph[x].push_back(make_pair(cost, y));
	}

	d[1] = 0;
	M.insert(make_pair(0, 1));
	while (!M.empty()) {
		int nod = (*M.begin()).second;
		M.erase(M.begin());
		for (auto j: Graph[nod]) {
			if (d[nod] + j.first < d[j.second]) {
				M.erase(make_pair(d[j.second], j.second));
				d[j.second] = d[nod] + j.first;
				M.insert(make_pair(d[j.second], j.second));
			}
		}
	}

	for (int i = 2; i <= n; i++) {
		if (d[i] == inf)	g << "0" << ' ';
		else g << d[i] << ' ';
	}


}