Pagini recente » Cod sursa (job #1679274) | Cod sursa (job #1972175) | Istoria paginii warm-up-2019/solutii/shoturi | Cod sursa (job #1200870) | Cod sursa (job #1739831)
#include <fstream>
#include <iostream>
#define NIL 32767
using namespace std;
int n, m;
int a[16384][16384];
bool viz[16384];
int d[16384], prec[16384], i0=1;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
void drum (int i)
{
if(prec[i]!=0)
{
drum(prec[i]);
fout<<i<<' ';
}
else
fout<<i<<' ';
}
int main()
{
int i, j, p, k, min;
fin>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
if(i==j)
a[i][j]=0;
else
a[i][j]=NIL;
}
for(k=1; k<=m; k++)
{
fin>>i>>j>>p;
a[i][j]=p;
}
fin.close();
for(i=1; i<=n; i++)
{
viz[i]=false;
d[i]=a[i0][i];
if(d[i]<NIL)
prec[i]=i0;
else
prec[i]=0;
}
viz[i0]=true;
prec[i0]=d[i0]=0;
for(j=1; j<=n-1; j++)
{
min=NIL;
for(i=1; i<=n; i++)
if(viz[i]==false && d[i]<min)
{
min=d[i];
k=i;
}
viz[k]=true;
for(i=1; i<=n; i++)
if(viz[i]==false && d[k]+a[k][i]<d[i])
{
d[i]=d[k]+a[k][i];
prec[i]=k;
}
}
for(i=2; i<=n; i++)
fout<<d[i]<<' ';
return 0;
}