Pagini recente » Cod sursa (job #1725187) | Cod sursa (job #2459300) | Cod sursa (job #2539353) | Cod sursa (job #840700) | Cod sursa (job #2715600)
#include <fstream>
#include <vector>
#define INF 1<<30
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int distmin[50001],rezolvat[50001];
struct ura{int nod,cost;};
vector <ura> v[50001];
ura aux;
int main()
{
int n,m,sursa,i,n1,n2,pret,pp,poz,min;
cin>>n>>sursa;
while(cin>>n1>>n2>>pret)
{
aux.nod=n2;
aux.cost=pret;
v[n1].push_back(aux);
}
for(i=1;i<=n;i++)
{
distmin[i]=INF;
}
sursa=1;
distmin[sursa]=0;
pp=0;
while(pp==0)
{
min=INF;
poz=-1;
for(i=1;i<=n;i++)
{
if(rezolvat[i]==0 && distmin[i]<min)
{
min=distmin[i];
poz=i;
}
}
if(poz!=-1)
{
rezolvat[poz]=1;
for(i=0;i<v[poz].size();i++)
{
aux=v[poz][i];
if(distmin[poz]+v[poz][i].cost<distmin[v[poz][i].nod])
{
distmin[v[poz][i].nod]=distmin[poz]+v[poz][i].cost;
}
}
}
else
{
pp=1;
}
}
for(i=2;i<=n;i++)
{
if(distmin[i]!=INF)
cout<<distmin[i]<<" ";
else
cout<<0<<" ";
}
return 0;
}