Cod sursa(job #2323043)

Utilizator AlexPascu007Pascu Ionut Alexandru AlexPascu007 Data 18 ianuarie 2019 18:57:14
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
#include <climits>
#define DIM 50010
#define inf INT_MAX
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,x,y,l,i,d[DIM],v[DIM],nod,vecin,cost,minim;
vector< pair<int,int> > L[DIM];
int main() {
	fin>>n>>m;
	for (i=1;i<=m;i++) {
		fin>>x>>y>>l;
		L[x].push_back({y,l});
	}
	for (i=2;i<=n;i++)
		d[i]=inf;
	while (1) {
		minim=inf;
		for (i=1;i<=n;i++)
			if (v[i]==0&&d[i]<minim) {
				minim=d[i];
				nod=i;
			}
		if (minim==inf)
			break;
		v[nod]=1;
		for (i=0;i<L[nod].size();i++) {
			vecin=L[nod][i].first;
			cost=L[nod][i].second;
			if (d[vecin]>d[nod]+cost)
				d[vecin]=d[nod]+cost;
		}
	}
	for (i=2;i<=n;i++) {
		if (d[i]==inf)
			fout<<"0 ";
		else
			fout<<d[i]<<" ";
	}
	return 0;
}