Pagini recente » Cod sursa (job #2776780) | Cod sursa (job #2798981) | Cod sursa (job #2388282) | Cod sursa (job #1378341) | Cod sursa (job #2096726)
#include<fstream>
#include<queue>
#include<vector>
#define DN 50005
#define pb push_back
#define x first
#define y second
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,dpr[DN],a,b,c,m;
priority_queue<pair<int,int> >q;
vector<pair<int,int> >v[DN];
void ve()
{
int nod,cost,newcost;
while(!q.empty())
{
nod=q.top().y;
cost=-q.top().x;
q.pop();
if(cost!=dpr[nod])
continue;
for(auto i:v[nod])
{
newcost=cost+i.y;
if(newcost<dpr[i.x])
{
dpr[i.x]=newcost;
q.push({-newcost,i.x});
}
}
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>a>>b>>c;
v[a].pb({b,c});
}
for(int i=2;i<=n;i++)
dpr[i]=2000000000;
q.push({0,1});
ve();
for(int i=2;i<=n;i++)
fout<<dpr[i]<<' ';
}