Pagini recente » Cod sursa (job #1768214) | Cod sursa (job #2370926)
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
vector<pair <int, int> >v[100000];
priority_queue<pair <int, int> >q;
int dist[100000];
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
void Dijkstra(int nr)
{
dist[nr]=-1;
q.push({-1,nr});
while(!q.empty())
{
nr=q.top().y;
dist[nr]=-dist[nr];
for(auto it:v[nr])
if(!dist[it.y]||dist[it.y]<-dist[nr]-it.x)
{
dist[it.y]=-dist[nr]-it.x;
q.push({dist[it.y],it.y});
}
while(!q.empty()&&dist[q.top().y]>0)
q.pop();
}
}
int main( )
{
int n,m,i,s,nr1,nr2,nr;
in>>n>>m;
for(i=0;i<m;i++)
{
in>>nr1>>nr2>>nr;
v[nr1].push_back({nr,nr2});
}
Dijkstra(1);
for(i=2;i<=n;i++)
out<<out<<max(dist[i]-1,0)<<" ";
return 0;
}