Pagini recente » Cod sursa (job #712425) | Cod sursa (job #2451257) | Cod sursa (job #1202076) | Cod sursa (job #2097174) | Cod sursa (job #3211664)
#include <bits/stdc++.h>
#define ll long long
//#define fin cin
//#define fout cout
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
vector < pair<int, int> > g[50005];
vector <int> dist (50005, INT_MAX);
bool done[50005];
/*
Pornim de la un nod
Alegem cel mai apropiat nod de el
Facem Reducerea
*/
int n, m;
void dijkstra (int nod)
{
done[nod]=1;
dist[nod]=0;
for (int i=1; i<n; i++) {
int min_dist=INT_MAX, min_nod;
for (pair<int, int> vecin : g[nod]) {
int new_dist=dist[nod]+vecin.second;
dist[vecin.first]=min(dist[vecin.first], new_dist);
}
for (int j=1; j<=n; j++) {
if (done[j]) continue;
if (dist[j]<min_dist) {
min_dist=dist[j];
min_nod=j;
}
}
nod=min_nod;
done[nod]=1;
}
}
int main()
{
fin.tie(0); fin.sync_with_stdio(false);
int x, y, z;
fin>>n>>m;
for (int i=1; i<=m; i++) {
fin>>x>>y>>z;
g[x].push_back({y, z});
}
dijkstra(1);
for (int i=2; i<=n; i++) {
fout<<dist[i]<<' ';
}
return 0;
}