Pagini recente » Cod sursa (job #1664704) | Cod sursa (job #1419268) | Cod sursa (job #2377908) | Cod sursa (job #1394190) | Cod sursa (job #2459005)
#include<fstream>
#include<vector>
#include<queue>
#define inf 100000001
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int,int>>g[50001];
int d[50001],n,m,i,x,y,c,viz[50001];
struct cmp{
bool operator () (const int &a, const int &b) const{
return d[a]>d[b];
}
};
priority_queue<int ,vector<int>, cmp>h;
int main () {
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>x>>y>>c;
g[x].push_back(make_pair(y,c));
}
d[1]=0;
for(i=2;i<=n;i++)
d[i]=inf;
h.push(1) ;
for(int j=1;j<=n;j++){
int nod=h.top();
viz[nod]=1;
h.pop();
for(i=0;i<g[nod].size();i++)
if(viz[g[nod][i].first]==0&&d[g[nod][i].first]>d[nod]+g[nod][i].second){
d[g[nod][i].first]=d[nod]+g[nod][i].second;
h.push(g[nod][i].first);
}
}
for(i=2;i<=n;i++)
if(d[i]==inf)
fout<<0<<" ";
else
fout<<d[i]<<" ";
return 0;
}