Pagini recente » Cod sursa (job #802527) | Cod sursa (job #1065835) | Cod sursa (job #2603729) | Cod sursa (job #2320115) | Cod sursa (job #3245342)
#include <fstream>
#include <algorithm>
#include <queue>
#include <vector>
#define nmax 60000
#define inf 9999999
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
struct abc
{
int ind;
int cost;
bool operator < (const abc &aux) const
{
return (cost>aux.cost);
}
};
bool viz[nmax];
int dp[nmax], n ,m, x, y, c;
priority_queue<abc> pq;
vector<abc> gf[nmax];
void bfs(int start)
{
pq.push({start,0});
dp[start]=0;
for(int i=2; i<=n; i++)
dp[i]=inf;
while(!pq.empty())
{
int nod=pq.top().ind;
if(viz[nod])
continue;
viz[nod]=1;
for(auto x : gf[nod])
{
int nnod=x.ind;
int ccost=x.cost;
if(dp[nnod]>dp[nod]+ccost)
{
dp[nnod]=dp[nod]+ccost;
pq.push({nnod,dp[nnod]});
}
}
pq.pop();
}
}
int main()
{
cin>>n>>m;
while(m--)
{
cin>>x>>y>>c;
gf[x].push_back({y,c});
}
bfs(1);
for(int i=2; i<=n; i++)
if(dp[i]!=inf)
cout<<dp[i]<<' ';
else cout<<0<<' ';
}