Pagini recente » Cod sursa (job #242560) | Cod sursa (job #2062714) | Cod sursa (job #1954366) | Cod sursa (job #2077495) | Cod sursa (job #2784331)
#include <bits/stdc++.h>
#define NMAX 50005
#define INF (1<<30)-1
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,m;
int Dist[NMAX];
int Viz[NMAX];
vector < pair < int , int > > v[NMAX];
priority_queue < int , vector < int > > q;
void cit()
{
in>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,c;
in>>x>>y>>c;
v[x].push_back({y,c});
}
}
void Dijkstra()
{
while(!q.empty())
{
int nod=q.top();
q.pop();
Viz[nod]=0;
for(const auto& vecin : v[nod])
{
if((-Dist[vecin.first])>(-Dist[nod])+vecin.second)
{
Dist[vecin.first]=-((-Dist[nod])+vecin.second);
if(!Viz[vecin.first])
{
q.push(vecin.first);
Viz[vecin.first]=1;
}
}
}
}
}
void prg()
{
for(int i=1;i<=n;i++)
Dist[i]=-INF;
Dist[1]=0;
Viz[1]=1;
q.push(1);
Dijkstra();
}
void afis()
{
for(int i=2;i<=n;i++)
if(Dist[i]==-INF)
out<<0<<' ';
else
out<<-Dist[i]<<' ';
}
int main()
{
cit();
prg();
afis();
return 0;
}