Pagini recente » Cod sursa (job #2217295) | Cod sursa (job #1689527) | Cod sursa (job #1273859) | Cod sursa (job #989015) | Cod sursa (job #3244256)
#include <fstream>
#include <queue>
#define int long long
#define INF (long long)(6e9)
#define NMAX (int)(25e4+5)
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
struct edge
{
int v, c;
friend bool operator<(const edge a, const edge b)
{
return a.c>b.c;
}
};
struct node{int v=0, d=INF; vector<edge> adj;};
node a[NMAX];
priority_queue<edge> q;
void dijkstra()
{
while(!q.empty())
{
edge f=q.top();
q.pop();
a[f.v].d=min(a[f.v].d, f.c);
a[f.v].v=1;
for(auto e:a[f.v].adj)
if(!a[e.v].v)
q.push({e.v, f.c+e.c});
}
}
signed main()
{
int n, m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u, v, c;
cin>>u>>v>>c;
a[u].adj.push_back({v, c});
a[v].adj.push_back({u, c});
}
q.push({1, 0}); a[1].d=0; a[1].v=1;
dijkstra();
for(int i=2;i<=n;i++)
cout<<a[i].d<<" ";
return 0;
}