Pagini recente » Cod sursa (job #1731836) | Cod sursa (job #2372590) | Cod sursa (job #2368548) | Cod sursa (job #1714782) | Cod sursa (job #2282646)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int N=50000+5;
int n,m,dp[N],co;
vector<pair<int,int>>g[N];
priority_queue<pair<int,int>>q;
pair<int,int>x;
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
while(m--)
{
register int a,b,x;
scanf("%d%d%d",&a,&b,&x);
g[a].push_back({b,x});
}
for(register int i=2;i<=n;i++)
{
dp[i]=(1<<30);
}
q.push({0,1});
while(!q.empty())
{
x=q.top();
x.first=-x.first;
q.pop();
if(dp[x.second]==x.first)
{
for(auto &it:g[x.second])
{
co=x.first+it.second;
if(co<dp[it.first])
{
dp[it.first]=co;
q.push({-co,it.first});
}
}
}
}
for(register int i=2;i<=n;i++)
{
if(dp[i]!=(1<<30))
{
printf("%d ",dp[i]);
}
else
{
printf("0 ");
}
}
printf("\n");
return 0;
}