Pagini recente » Cod sursa (job #982524) | Cod sursa (job #1828502) | Cod sursa (job #1737885) | Cod sursa (job #23175) | Cod sursa (job #2158020)
#include <fstream>
#include <vector>
#include <queue>
#define Nmax 50002
#define cost first
#define nod second
#define INF 0x3f3f3f3f
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n, m, i, j, c, viz[Nmax];
vector < pair < int, int > > G[Nmax];
vector < pair < int, int > > :: iterator it;
priority_queue < pair < int, int >, vector < pair < int, int > >, greater < pair < int, int > > > p;
pair <int, int> aux;
int main()
{
fin >> n >> m;
while (fin >> i >> j >> c)
{
G[i].push_back (make_pair (c, j));
}
p.push (make_pair (0, 1));
while (!p.empty ())
{
aux = p.top ();
p.pop ();
if (!viz[aux.nod])
{
viz[aux.nod] = aux.cost;
for (i = 0; i < G[aux.nod].size (); i++)
{
if (!viz[G[aux.nod][i].nod])
{
p.push (make_pair (aux.cost + G[aux.nod][i].cost, G[aux.nod][i].nod));
}
}
}
}
for (i = 2; i <= n; i ++)
{
fout << viz[i] << " ";
}
fin.close ();
fout.close ();
return 0;
}