Pagini recente » Profil Danciu_Domnita_Elena_323CA | Cod sursa (job #1578618) | Cod sursa (job #1656739) | Cod sursa (job #1618693) | Cod sursa (job #2113139)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define MAXN 50005
#define INF 0x3f3f3f3f
using namespace std;
ifstream f ("dijkstra.in");
ofstream g ("dijkstra.out");
int n,m;
int dist[MAXN];
struct edge
{
int y,cost;
};
struct cmp
{
bool operator()(int a,int b)
{
return dist[a]>dist[b];
}
};
vector <edge> graf[MAXN];
priority_queue <int, vector<int>,cmp> heap;
void citire()
{
for(int i=0;i<m;i++)
{
int x,y,z;
f>>x>>y>>z;
graf[x].push_back({y,z});
}
for(int i=0;i<=n;i++)
dist[i]=INF;
}
void solve()
{
dist[1]=0;
heap.push(1);
while(!heap.empty())
{
int nod=heap.top();
heap.pop();
for(auto x:graf[nod])
{
if(dist[x.y]>dist[nod]+x.cost)
{
dist[x.y]=dist[nod]+x.cost;
heap.push(x.y);
}
}
}
}
void afisare()
{
for(int i=2;i<=n;i++)
g<<dist[i]<<" ";
}
int main()
{
f>>n>>m;
citire();
solve();
afisare();
return 0;
}