Pagini recente » Cod sursa (job #275430) | Cod sursa (job #1101815) | Cod sursa (job #510861) | Cod sursa (job #977676) | Cod sursa (job #2280427)
#include <fstream>
#include <vector>
#include <queue>
#include <functional>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int maxx=2147483647;
vector< pair <int,int> >v[50000];
int d[50000];
void dijkstra(){
priority_queue< pair <int,int> , vector < pair<int,int> >,greater <pair<int,int> > >x;
x.push({0,1});
while(!x.empty()){
int a=x.top().first;
int b=x.top().second;
x.pop();
if(d[b]!=a) continue;
for(auto const &i: v[b]){
if(a+i.second<d[i.first]){
d[i.first] = a + i.second;
x.push({d[i.first], i.first});
}
}
}
}
int main()
{
int n,m,i;
f>>n>>m;
for(i=1;i<=n;i++){
int a,b,cost;
f>>a>>b>>cost;
v[a].push_back(make_pair(b,cost));
}
for(i=2;i<=n;i++)
d[i]=maxx;
dijkstra();
for(i=2;i<=n;i++)
{
if(d[i]==maxx)
g<<"0 ";
else
g<<d[i]<<" ";
}
return 0;
}