Cod sursa(job #3205128)

Utilizator _Fibonacci_Caitaz _Fibonacci_ Data 18 februarie 2024 21:07:02
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;
vector <pair <int, int> > a[50005];
int dist [50005];
int n,m,i,x,y,cost,node,next_node,urmatoarea;
ifstream in ("dijkstra.in");
ofstream out ("dijkstra.out");
 
int main(){
    in >> n >> m ;
    for (i=1;i<=n;i++)
    {
		dist[i]=INT_MAX; 
	}
    for (i=1;i<=m;i++)
    {
    	in  >>  x >> y >> cost ;
		a[x].push_back({cost,y});
	}
	set  <pair <int,int> > s;
	dist[1]=0;
	s.insert({0,1});
	while (!s.empty())
	{
		node=s.begin()->second;
		s.erase(s.begin());
		for (auto next:a[node])
		{
			next_node=next.second;
			cost=next.first;
			urmatoarea=dist[node]+cost;
			if (urmatoarea<dist[next_node])
			{
				s.erase({dist[next_node],next_node});
				dist[next_node]=urmatoarea;
				s.insert({dist[next_node],next_node});
			}
		}
	}
    for (i=2;i<=n;i++)
    {
    	if (dist[i]==INT_MAX)out<<"0 ";
    	else out << dist[i]<<" ";
	}
	out << "\n";
}