Pagini recente » Cod sursa (job #1166139) | Cod sursa (job #752184) | Cod sursa (job #2810139) | Cod sursa (job #1582201) | Cod sursa (job #2195670)
#include <bits/stdc++.h>
#define INF 1e9
using namespace std;
vector<pair<unsigned short,unsigned short> >frunza[50005],tulpina[50005];
int mn[50005];
int n,m,x,y,l;
void calc(int pos)
{
int MN=INF;
for(int i=0;i<tulpina[pos].size();i++)
{
if(mn[tulpina[pos][i].first]==INF)
calc(tulpina[pos][i].first);
if(mn[tulpina[pos][i].first]+tulpina[pos][i].second<MN)
MN=mn[tulpina[pos][i].first]+tulpina[pos][i].second;
}
mn[pos]=MN;
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&l);
frunza[x].push_back({y,l});
tulpina[y].push_back({x,l});
}
for(int i=2;i<=n;i++)
mn[i]=INF;
for(int i=2;i<=n;i++)
{
if(mn[i]==INF)
calc(i);
printf("%d ",mn[i]);
}
return 0;
}