Cod sursa(job #1970594)

Utilizator DimaTCDima Trubca DimaTC Data 19 aprilie 2017 14:34:51
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<vector>

using namespace std;

const int INF = 1000000000;
const int NMAX = 5e4 + 5;
 
 
int main() {
	
	ifstream cin("dijkstra.in");
	ofstream cout("dijkstra.out");
	int n,m;
	vector <pair <int,int> > g[NMAX]; //(n);
	
	cin>>n>>m;
	for (int i=0; i<m; i++) {
		int x,y,c;
        cin >> x >> y >> c;
        g[x].push_back(make_pair(y, c));
 }

	int s = 1;
	vector<int> d (n+1, INF),  p (n); //n+1!!!
	d[s] = 0;
	bool u[NMAX];
	for (int i=0; i<n; ++i) {
		int v = -1;
		for (int j=1; j<=n; ++j)
			if (!u[j] && (v == -1 || d[j] < d[v])) 
				v = j;
				
		if (d[v] == INF)
			break;
		u[v] = true;
 
		for (size_t j=0; j<g[v].size(); ++j) {
			int to = g[v][j].first,
				len = g[v][j].second;
			if (d[v] + len < d[to]) {
				d[to] = d[v] + len;
				p[to] = v;
			}
		}
	}
	
	for (int i=2; i<=n; i++) cout<<d[i]<<" ";
	
	return 0;
}