Pagini recente » Cod sursa (job #3159773) | Cod sursa (job #2627336) | Cod sursa (job #1142523) | Cod sursa (job #300416) | Cod sursa (job #2603230)
#include <bits/stdc++.h>
using namespace std;
const int inf=2e9;
struct edge
{
int x,c;
bool operator <(const edge &aux) const
{
return c>aux.c;
}
};
vector<edge> v[50010];
priority_queue<edge> q;
int d[50010];
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m,x,y,c;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&c);
v[x].push_back({y,c});
}
for(int i=1;i<=n;i++) d[i]=inf;
d[1]=0;
q.push({1,0});
while(!q.empty())
{
int nod=q.top().x,c=q.top().c;
q.pop();
if(d[nod]<c) continue;
for(int i=0;i<v[nod].size();i++)
{
int vec=v[nod][i].x,c1=v[nod][i].c;
if(c+c1<d[vec])
{
d[vec]=c+c1;
q.push({vec,d[vec]});
}
}
}
for(int i=2;i<=n;i++)
if(d[i]<inf) printf("%d ",d[i]);
else printf("0 ");
return 0;
}