Pagini recente » Cod sursa (job #385160) | Cod sursa (job #3244280) | Cod sursa (job #491611) | Cod sursa (job #1397509) | Cod sursa (job #3268485)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int oo = 2000000000;
int n, m;
vector<pair<int, int>> L[50001];
int d[50001] , viz[50001];
void Dijkstra(int p)
{
int i, k, costMin, cost;
for (i = 1; i <= n; i++)
d[i] = oo;
d[p] = 0;
for (int pas = 1; pas <= n; pas++)
{
costMin = oo;
k = 0;
for (i = 1; i <= n; i++)
if (costMin > d[i] && viz[i] == 0)
{
costMin = d[i];
k = i;
}
if (costMin == oo) return;
viz[k] = 1;
for (auto e : L[k])
{
i = e.first;
cost = e.second;
if (d[i] > d[k] + cost)
d[i] = d[k] + cost;
}
}
}
int main()
{
fin >> n >> m;
for (int i = 0; i < m; i++)
{
int A, B, C;
fin >> A >> B >> C;
L[A].push_back({B, C});
}
Dijkstra(1);
for (int i = 2; i <= n; i++)
if (d[i] == oo) fout << 0 << " ";
else fout << d[i] << " ";
return 0;
}