Pagini recente » Cod sursa (job #2731620) | Cod sursa (job #2123412) | Cod sursa (job #1347404) | Cod sursa (job #1330550) | Cod sursa (job #2927141)
#include <bits/stdc++.h>
#define MAX 9999999
using namespace std;
ifstream fin("dijsktra.in");
ofstream fout("dijsktra.out");
struct muchie
{
int nod, cost;
inline bool operator <(const muchie &A) const
{
return cost > A.cost;
}
};
priority_queue <muchie> q;
vector <muchie> v[50005];
int n, m;
bool viz[50005];
int dp[50005];
inline void Citire()
{
fin >> n >> m;
for(int i = 1; i <= m; i ++)
{
int a, b, c;
fin >> a >> b >> c;
muchie aux;
aux.nod = b, aux.cost = c;
v[a].push_back(aux);
}
}
inline void Dijsktra(int start)
{
for(int i = 1; i <= n; i ++)
{
dp[i] = MAX;
}
dp[start] = 0;
q.push({start, 0});
while(!q.empty())
{
muchie aux = q.top();
q.pop();
if(viz[aux.nod] == 0)
{
viz[aux.nod] = 1;
for(auto it: v[aux.nod])
{
if(dp[it.nod] > dp[aux.nod] + it.cost)
{
dp[it.nod] = dp[aux.nod] + it.cost;
q.push({it.nod, dp[it.nod]});
}
}
}
}
}
int main()
{
Citire();
Dijsktra(1);
for(int i = 2; i <= n; i ++)
{
fout << dp[i] << " ";
}
return 0;
}