Pagini recente » Cod sursa (job #1082018) | Cod sursa (job #457387) | Cod sursa (job #473022) | Cod sursa (job #2833073) | Cod sursa (job #2249662)
#include <bits/stdc++.h>
#define nmax 50005
#define oo 1e9
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n, m;
int minimum_Distance[nmax];
vector <pair<int, int>> graph[nmax];
class cmp
{
public:
const bool operator () ( pair <int, int> &a, pair<int, int> &b )
{
return a.second > b.second;
}
};
priority_queue <pair<int, int>, vector<pair<int, int>>, cmp> road;
void dijkstra()
{
for ( int i = 2; i <= n; ++i )
minimum_Distance[i] = oo;
road.push({1, minimum_Distance[1]});
while ( road.size() )
{
int node = road.top().first;
int edge = road.top().second;
road.pop();
if ( minimum_Distance[node] != edge )
continue;
for ( auto x:graph[node] )
{
if ( minimum_Distance[x.first] > x.second+edge )
{
minimum_Distance[x.first] = x.second+edge;
road.push({x.first, x.second+edge});
}
}
}
}
int main()
{
fin>>n>>m;
for ( int i = 1; i <= m; ++i )
{
int first_Node, second_Node, price;
fin>>first_Node>>second_Node>>price;
graph[first_Node].push_back({second_Node, price});
}
dijkstra();
for ( int i = 2; i <= n; ++i )
if ( minimum_Distance[i] == oo )
fout<<0<<" ";
else
fout<<minimum_Distance[i]<<" ";
}