Pagini recente » Cod sursa (job #811293) | Cod sursa (job #3304386) | mesaj-matei-2020 | Cod sursa (job #1595823) | Cod sursa (job #3304434)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct chestie{
int nod;
int lung;
bool operator <(const chestie &other) const {
return lung>other.lung;
}
};
int dist[50001];
vector<vector<chestie>>v;
priority_queue<chestie>pq;
void dijkstra(int start){
dist[start]=0;
pq.push({start,0});
while(!pq.empty()){
chestie nod_act=pq.top();
pq.pop();
if(nod_act.lung<dist[nod_act.nod])
continue;
int n=nod_act.nod;
for(int i=0;i<v[n].size();i++){
chestie vec= v[n][i];
if(vec.lung+nod_act.lung<dist[vec.nod]){
//vec+dist pana la nodul curent< dist pana la vec pana acum
dist[vec.nod]=vec.lung+nod_act.lung;
pq.push({vec.nod,dist[vec.nod]});
}
}
}
}
int main()
{
int n,m;
fin>>n>>m;
v.resize(n+1);
memset(dist,0x3F3F3F3F,sizeof dist);
for(int i=1;i<=m;i++){
int n1,n2,l;
fin>>n1>>n2>>l;
v[n1].push_back({n2,l});
}
dijkstra(1);
for(int i=2;i<=n;i++){
if(dist[i]!=0x3F3F3F3F)
fout<<dist[i]<<" ";
}
return 0;
}