Cod sursa(job #2143091)

Utilizator shantih1Alex S Hill shantih1 Data 25 februarie 2018 16:18:32
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int n,i,j,m,a,b,c,cst[50005],fi,sc;
vector<pair<int,int>> vec[50005];
set<pair<int,int>> ss;

int main() {
	
	fin>>n>>m;
	for(i=1;i<=m;i++)
	{
		fin>>a>>b>>c;
		vec[a].push_back(make_pair(b,c));
	}
	m=n;
	for(i=1;i<=n;i++)    cst[i]=-1;
	
	ss.insert(make_pair(0,1));
	while(!ss.empty())
	{
		c=(*ss.begin()).first;
		n=(*ss.begin()).second;
		ss.erase(ss.begin());
		
		if(cst[n]==-1)
		{
			cst[n]=c;
			for(i=0;i<vec[n].size();i++)
			{
				fi=vec[n][i].first;
				sc=vec[n][i].second;
				if(cst[fi]==-1) ss.insert(make_pair(c+sc,fi));
			}
		}
	}
	for(i=2;i<=m;i++)
	{
		if(cst[i]==-1)  fout<<0<<" ";
		else    fout<<cst[i]<<" ";
	}
}