Pagini recente » Cod sursa (job #2313356) | Rezultatele filtrării | Cod sursa (job #3298114) | Rezultatele filtrării | Cod sursa (job #3298019)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int MAX=5e4;
int n,m,d[MAX+5],i,nod1,nod2,cost;
vector <pair<int,int>> muchii[MAX+5];
priority_queue <pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
int main()
{
fin>>n>>m;
while (m)
{
fin>>nod1>>nod2>>cost;
muchii[nod1].push_back({nod2,cost});
m--;
}
for (i=1; i<=n; i++)
d[i]=2e9;
d[1]=0;
pq.push({0,1});
while (!pq.empty())
{
nod1=pq.top().second;
pq.pop();
for (auto x: muchii[nod1])
{
nod2=x.first; cost=x.second;
if (d[nod2]>d[nod1]+cost)
{
d[nod2]=d[nod1]+cost;
pq.push({d[nod2],nod2});
}
}
}
for (i=2; i<=n; i++)
if (d[i]==2e9)
fout<<0<<" ";
else
fout<<d[i]<<" ";
return 0;
}