Pagini recente » Cod sursa (job #1565261) | Cod sursa (job #2055825) | Cod sursa (job #2522499) | Cod sursa (job #1111747) | Cod sursa (job #2425561)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define inf 100000
#define Nmax 50005
using namespace std;
ifstream fin("data.in");
ofstream fout("data.out");
int viz[Nmax];
int dist[Nmax];
vector <pair <int, int>> v[Nmax];
priority_queue <pair <int, int>> Q;
int main()
{
int n, m;
int x, y, c;
fin>>n>>m;
for (int i = 0; i < m; i++)
{
fin>>x>>y>>c;
v[x].push_back({c, y});
}
for (int i = 0; i <= n; i++)
dist[i] = inf;
dist[1] = 0;
Q.push({0, 1});
while (!Q.empty())
{
int nod = Q.top().second;
Q.pop();
if (viz[nod])
continue;
vector <pair <int, int>>::iterator it;
for (it = v[nod].begin(); it != v[nod].end(); it++)
if (dist[it->second] > dist[nod] + it->first)
{
dist[it->second] = dist[nod] + it->first;
Q.push({-dist[it->second], it->second});
}
}
for (int i = 2; i <= n; i++)
fout<<dist[i]<<" ";
return 0;
}