Pagini recente » Cod sursa (job #1443891) | Cod sursa (job #1305759) | Cod sursa (job #110836) | Cod sursa (job #116633) | Cod sursa (job #2683936)
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
#define inf 2000000000
using namespace std;
//priority_queue <pair<int,int>,vector<pair<int,int>>,greater <pair<int,int>>> q;
const int NMAX=250005;
//const int inf=
bool vis[NMAX];
int dist[NMAX];
vector <pair<int,int>> mu[NMAX];
int n,m,s,a,b,c;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
void dijkstra(int start){
priority_queue <pair <int, int>> q;
q.push({0,start});
dist[start]=0;
while(!q.empty()){
pair<int,int> x=q.top();
q.pop();
if(vis[x.second]==false){
vis[x.second]=1;
for(int i=0;i<mu[x.second].size();i++)
if(dist[mu[x.second][i].first]>x.first+mu[x.second][i].second)
{
q.push({x.first+mu[x.second][i].second,mu[x.second][i].first});
dist[mu[x.second][i].first]=x.first+mu[x.second][i].second;
}
}
}
}
int main()
{
in>>n>>m;
for(int i=1;i<=m;i++){
in>>a>>b>>c;
mu[a].push_back({b,c});
}
for(int i=1;i<=n;i++)
dist[i]=inf;
dijkstra(1);
for(int i=2;i<=n;i++)
if(dist[i]!=inf)
out<<dist[i]<<" ";
else
out<<0<<" ";
return 0;
}