Pagini recente » Cod sursa (job #2504291) | Cod sursa (job #3031018) | Cod sursa (job #1492401) | Cod sursa (job #1394156) | Cod sursa (job #2704646)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define INF -1000000000
using namespace std;
int n,m,x,y,z,dist[50100];
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector<pair<int,int>> L[50100]; // first -> vecin
priority_queue<pair<int,int>> Q;
int main() {
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>x>>y>>z;
L[x].push_back(make_pair(y, -z));
}
Q.push(make_pair(0,1));
for(int i=2;i<=n;i++)
{
dist[i]=INF;
Q.push(make_pair(INF,i));
}
while(!Q.empty())
{
pair<int,int> u=Q.top();
if(dist[u.second] <= u.first)
for(auto &it: L[u.second])
{
int alt = u.first + it.second;
if(alt > dist[it.first])
{
dist[it.first]=alt;
Q.push(make_pair(alt,it.first));
}
}
Q.pop();
}
for(int i=2;i<=n;i++)
g<<-dist[i]<<' ';
return 0;
}