Pagini recente » Cod sursa (job #3262428) | Cod sursa (job #2562365) | Cod sursa (job #2313301) | Cod sursa (job #2449674) | Cod sursa (job #2762466)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("dijkstra.in");
ofstream g ("dijkstra.out");
int n,m;
int dist[250005];
struct el
{
int node,cost;
bool operator < (const el &A) const{
return cost > A.cost;
}
};
priority_queue < el > Q;
vector <el> L[250005];
void Dijkstra()
{
Q.push({1,0});
while(!Q.empty())
{
int val=Q.top().cost;
int i=Q.top().node;
for(int x=0; x<L[i].size() ; ++x)
{
el nc=L[i][x];
if((dist[i]+nc.cost<dist[nc.node] ) || (dist[nc.node]==0))
{
dist[nc.node]=dist[i]+nc.cost;
Q.push({nc.node ,dist[nc.node]});
}
}
Q.pop();
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;++i)
{
int x,y,cost;
f>>x>>y>>cost;
L[x].push_back({y ,cost});
}
Dijkstra();
for(int i=2;i<=n;++i)
g<<dist[i]<<" ";
return 0;
}