Pagini recente » Cod sursa (job #292376) | onis-2014/solutii-runda-4 | Cod sursa (job #1644648) | Statistici Ionescu Laura (guzgandemunte) | Cod sursa (job #2168114)
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int l[50001],k;
struct el{int nod; int urm; int dist;};
el a[250001];
void add(int x, int y, int c)
{
k++;
a[k].nod=y;
a[k].urm=l[x];
l[x]=k;
a[k].dist=c;
}
bool viz[50001];
int lun[50001];
int main()
{
int n,m,x,y,z,i,nod,j;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>z;
add(x,y,z);
}
for(i=1;i<=n;i++)
lun[i]=99999999;
viz[1]=1;
int poz=l[1];
while(poz!=0)
{
nod=a[poz].nod;
if(lun[nod]>a[poz].dist)
lun[nod]=a[poz].dist;
poz=a[poz].urm;
}
for(i=2;i<=n;i++)
{
int mini=999999991;
for(j=2;j<=n;j++)
if(lun[j]<mini and viz[j]==0)
{
mini=lun[j];
nod=j;
}
int nod2=nod;
viz[nod]=1;
poz=l[nod];
while(poz!=0)
{
nod=a[poz].nod;
if(lun[nod]>a[poz].dist+lun[nod2])
lun[nod]=a[poz].dist+lun[nod2];
poz=a[poz].urm;
}
}
for(i=2;i<=n;i++)
if(lun[i]!=99999999)
g<<lun[i]<<" ";
else
g<<0<<" ";
return 0;
}