Pagini recente » Cod sursa (job #92838) | Cod sursa (job #459037) | Cod sursa (job #1968753) | Cod sursa (job #1853683) | Cod sursa (job #2736585)
#include <iostream>
#include <cstring>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#define infi (1<<30)
#define f first
#define s second
vector <pair<int, int>> v[50002];
priority_queue< pair< int,int >, vector< pair< int, int >>, greater< pair< int, int >> >q;
int n, m, i, x, y, dp[50002], z, viz[50002], p, le;
void DIJ(){
int nc;
q.push({1,0});
while(q.size() != 0){
nc = q.top().f;
q.pop();
if (viz[nc] == 0)
{
viz[nc] = 1;
for (auto x : v[nc]) {
if (dp[nc] + x.s < dp[x.f]) {
dp[x.f] = dp[nc] + x.s;
q.push({x.f,dp[x.f]});
}
}
}
}
}
int main()
{
fin>>n>>m;
for(i = 1; i <= m; i++){
fin>>x>>y>>z;
v[x].push_back({y, z});
}
for (i = 2; i <= n; i++)
dp[i] = infi;
DIJ();
for(i = 2; i <= n; i++){
if ( dp[i] == infi )
fout<<0<< ' ';
else
fout<<dp[i]<<' ';
}
return 0;
}