Pagini recente » Cod sursa (job #2407331) | Cod sursa (job #481018) | Cod sursa (job #1306380) | Cod sursa (job #706783) | Cod sursa (job #1051949)
#include<fstream>
#define M 2000000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int a[20000][20000],cost[50001],n,viz[50001],t[50001],valmin;
void umple()
{ int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=M;
}
int main()
{ int m,i,l,j,x,y,z,k;
f>>n>>m;
umple();
for(i=1;i<=m;i++)
{f>>x>>y>>z;
a[x][y]=z;
}
viz[1]=1;
for(i=1;i<=n;i++)
{cost[i]=a[1][i];
if(cost[i]<M)t[i]=1;}
for(l=1;l<=n-1;l++)
{
valmin=M;
for(j=1;j<=n;j++)
if(cost[j]<valmin&&!viz[j]){valmin=cost[j];k=j;}
viz[k]=1;
for(i=1;i<=n;i++)
if(!viz[i])
{
if(cost[i]>cost[k]+a[k][i])
{
cost[i]=cost[k]+a[k][i];t[i]=k;
}
}
}
for(i=2;i<=n;i++)
g<<cost[i]<<" ";
return 0;
}