Pagini recente » Cod sursa (job #1606713) | Cod sursa (job #1715010) | Cod sursa (job #1353605) | Cod sursa (job #835216) | Cod sursa (job #2285713)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n, m;
int v[50005];
class cmp
{
public:
const bool operator () ( pair<int, int> &a, pair<int, int> &b)
{
return a.second > b.second;
}
};
vector <pair<int, int>> graph[50005];
priority_queue <pair<int, int>, vector<pair<int, int>>, cmp> pq;
void dijkstra ()
{
for ( int i = 2; i <= 50000; ++i )
v[i] = 1e9;
pq.push({1, v[1]});
while ( pq.size() )
{
int node = pq.top().first;
int cost = pq.top().second;
pq.pop();
if ( v[node] != cost )
continue;
for ( auto x:graph[node] )
{
if ( v[x.first] > v[node]+x.second )
{
v[x.first] = v[node]+x.second;
pq.push({x.first, v[x.first]});
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
fin.tie(0); fout.tie(0);
fin>>n>>m;
for ( int i = 1; i <= m; ++i )
{
int a, b, c;
fin>>a>>b>>c;
graph[a].push_back({b, c});
graph[b].push_back({a, c});
}
dijkstra();
for ( int i = 2; i <= n; ++i )
{
if ( v[i] == 1e9 )
fout<<0<<" ";
else
fout<<v[i]<<" ";
}
}