Pagini recente » Cod sursa (job #2889462) | Cod sursa (job #877490) | Cod sursa (job #1813123) | Cod sursa (job #1838810) | Cod sursa (job #3253475)
#include <fstream>
#include <queue>
#define int long long
#define INF (long long)(6e9)
#define NMAX (int)(5e4+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();
for(auto e:a[f.v].adj)
if(!a[e.v].v && a[e.v].d>f.c+e.c)
{
a[e.v].v=1;
a[e.v].d=f.c+e.c;
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++)
if(a[i].d==INF)
cout<<"0 ";
else
cout<<a[i].d<<" ";
return 0;
}