Cod sursa(job #2423513)

Utilizator AlexBlagescuBlagescu Alex George AlexBlagescu Data 21 mai 2019 16:40:55
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <vector>
#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> viz(n+1, 0), d(n+1, inf);

	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;
	int min, pmin;
	for (int i = 1; i <= n; i++) {
		int min = inf;
		for (int j = 1; j <= n; j++) {
			if (d[j] < min && viz[j] == 0) {
				min = d[j];
				pmin = j;
			}
		}
		viz[pmin] = 1;
		for (auto j : Graph[pmin]) {
			if (d[pmin] + j.first < d[j.second]) {
				d[j.second] = d[pmin] + j.first;
			}
		}
	}

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


}