Pagini recente » Cod sursa (job #517375) | Cod sursa (job #495411) | Cod sursa (job #850439) | Cod sursa (job #831081) | Cod sursa (job #2977953)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=999999999;
int n,m,d[50001];
struct muchie
{
int y,cost;
bool operator<(const muchie &m) const
{
return cost>m.cost;
}
};
priority_queue <muchie> Q;
vector <muchie> G[50001];
void Dijkstra(int nod)
{
int cost;
d[nod]=0;
Q.push({nod,0});
while(!Q.empty())
{
muchie crt=Q.top();
Q.pop();
for(muchie m:G[crt.y])
{
cost=d[crt.y]+m.cost;
if(d[m.y]>cost)
{
d[m.y]=cost;
Q.push({m.y,cost});
}
}
}
}
int main()
{
int x,y,w,i;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>w;
G[x].push_back({y,w});///se adauga muchia cu costul w de la x la y
}
for(i=1;i<=n;i++)
d[i]=INF;
Dijkstra(1);
for(i=2;i<=n;i++)
g<<d[i]<<' ';
}