Pagini recente » Cod sursa (job #2299377) | Cod sursa (job #315482) | Cod sursa (job #678603) | Cod sursa (job #2787537) | Cod sursa (job #2764837)
#include<iostream>
#include<fstream>
#include<queue>
#include<vector>
#define inf 0x3f3f3f3f
#define NMAX 50010
#define MMAX 5*NMAX
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int D[NMAX];
struct cmp
{
bool operator()(int a, int b)
{
return D[a] > D[b];
}
};
priority_queue<int, vector<int>, cmp> coada;
vector<pair<int,int>> graph[NMAX];
int n, m;
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int x, y,c;
cin >> x >> y>>c;
graph[x].push_back({ y,c });
}
for (int i = 1; i <= n; i++)
D[i] = inf;
D[1] = 0;
coada.push(1);
while (!coada.empty())
{
int extract = coada.top();
coada.pop();
for (auto it : graph[extract])
{
int vec = it.first;
int cost = it.second;
if (D[extract] + cost < D[vec])
{
D[vec] = D[extract] + cost;
coada.push(vec);
}
}
}
for (int i = 2; i <= n; i++)
{
if (D[i] == inf)
D[i] = 0;
cout << D[i] << " ";
}
}