Pagini recente » Cod sursa (job #2556055) | Cod sursa (job #2917777) | Cod sursa (job #1655022) | Cod sursa (job #2383293) | Cod sursa (job #3236035)
#include <fstream>
#include <vector>
using namespace std;
using PII = pair<int, int>;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
static constexpr int nMAX = ((int)(5e4) + 1),
INF = ((int)(1e9));
int n;
vector<PII> G[nMAX];
int d[nMAX];
bool used[nMAX];
static inline void read()
{
f.tie(nullptr);
f >> n;
int m = 0;
f >> m;
int u = 0, v = 0, t = 0;
for (int e = 1; e <= m; ++e)
f >> u >> v >> t,
G[u].push_back({t, v});
return;
}
int main()
{
read();
for (int i = 1; i <= n; ++i)
if ((int)G[i].size() > 1)
sort(G[i].begin(), G[i].end());
for (int i = 2; i <= n; ++i)
d[i] = INF;
for (int i = 1; i <= n; ++i)
{
int min_Node = -1, min_dist = INF;
for (int j = 1; j <= n; ++j)
if (!used[j])
if (d[j] < min_dist)
min_dist = d[j], min_Node = j;
used[min_Node] = true;
for (const PII &e : G[min_Node])
if (d[min_Node] + e.first < d[e.second])
d[e.second] = d[min_Node] + e.first;
}
for (int i = 2; i <= n; ++i)
{
g << d[i];
if (i != n)
g << ' ';
else
g << '\n';
}
return 0;
}