Pagini recente » Cod sursa (job #166142) | Cod sursa (job #1898379) | Cod sursa (job #2676805) | Cod sursa (job #770250) | Cod sursa (job #3250580)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#define cin fin
#define cout fout
#define DIM 50005
#define OO 100005
int n,m,k,co,a,b,c[DIM],ans,p;
struct element{
int nod;
int cost;
bool operator <(element e) const
{
return this->cost>e.cost;
}
};
struct vecin{
int nod;
int cost;
};
vector<vector<vecin>> v;
priority_queue<element> pq;
void bfs(int p)
{
pq.push({p,0});
while(!pq.empty())
{
int nod=pq.top().nod,
cost=pq.top().cost;
pq.pop();
if(cost==c[nod])
{
for(int i=0;i<v[nod].size();i++)
{
int nod2=v[nod][i].nod,
cost2=v[nod][i].cost;
if(c[nod2]>cost+cost2)
{
c[nod2]=cost+cost2;
pq.push({nod2,cost+cost2});
}
}
}
}
}
int main()
{
cin>>n>>m;
v.resize(n+1);
for(int i=2;i<=n;i++) c[i]=OO;
for(int i=1;i<=m;i++)
{
int a,b,co;
cin>>a>>b>>co;
v[a].push_back({b,co});
}
bfs(1);
for(int i=2;i<=n;i++)
{
if(c[i]==OO) cout<<0<<" ";
else cout<<c[i]<<" ";
}
return 0;
}