Pagini recente » Cod sursa (job #2717198) | Cod sursa (job #2965005) | Cod sursa (job #2314280) | Cod sursa (job #2874455) | Cod sursa (job #2465310)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,x,y,val,sol[50001];
vector<pair<int,int>>lista[50001];
set<pair<int,int>>coada;
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>x>>y>>val;
lista[x].push_back(make_pair(y,val));
lista[y].push_back(make_pair(x,val));
sol[i]=-1;
}
for(int i=0;i<lista[1].size();i++)
{
coada.insert(make_pair(lista[1][i].second,lista[1][i].first));
sol[lista[1][i].first]=lista[1][i].second;
}
while(!coada.empty())
{
auto it=coada.begin();
int nod=(*it).second;
int cost=(*it).first;
for(int i=0;i<lista[nod].size();i++)
if(sol[lista[nod][i].first]==-1||sol[lista[nod][i].first]>cost+lista[nod][i].second)
{
sol[lista[nod][i].first]=cost+lista[nod][i].second;
coada.insert(make_pair(lista[nod][i].second+cost,lista[nod][i].first));
}
coada.erase(it);
}
for(int i=2;i<=n;i++)
fout<<sol[i]<<" ";
return 0;
}