Pagini recente » Cod sursa (job #1737768) | Cod sursa (job #1144502) | Cod sursa (job #1250415) | Cod sursa (job #860971) | Cod sursa (job #1995920)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define pb push_back
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct par
{
int nod;
int len;
bool operator<(const par& a) const
{
return len > a.len;
}
};
const int NMAX = 5e4 + 10;
const int MMAX = 25e4 + 10;
int n, m;
par p;
int x, y, len;
vector < par > v[NMAX];
int er[NMAX];
int main()
{
fin >> n >> m;
for(int i = 0; i < m; ++i)
{
fin >> x >> y >> len;
p.nod = x;
p.len = len;
v[y].pb(p);
p.nod = y;
v[x].pb(p);
}
for(int i = 0; i <= n; ++i)
er[i] = -1;
er[1] = 0;
int cnod = 1;
priority_queue < par > q;
for(int k = 1; k < n; ++k)
{
for(int i = 0; i < v[cnod].size(); ++i)
{
p = v[cnod][i];
p.len += er[cnod];
q.push(p);
}
do
{
p = q.top();
if(er[p.nod] != -1)
q.pop();
}while(er[p.nod] != -1);
cnod = p.nod;
er[cnod] = p.len;
q.pop();
}
for(int i = 2; i <= n; ++i)
fout << er[i] << " ";
return 0;
}