Mai intai trebuie sa te autentifici.
Cod sursa(job #2233864)
Utilizator | Data | 24 august 2018 16:29:54 | |
---|---|---|---|
Problema | Algoritmul lui Dijkstra | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.95 kb |
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
short n,m,poz,i,j,c;
long ma,mi,d[22269];
bool s[22269];
int a[22269][22269];
int main()
{
ma=495863825;
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
a[i][j]=ma;
else
a[i][j]=0;
while(fin>>i>>j>>c)
a[i][j]=c;
s[1]=1;
for(i=1;i<=n;i++)
{
d[i]=a[1][i];
}
for(i=1;i<n;i++)
{
mi=ma;
for(j=1;j<=n;j++)
if(!s[j])
if(d[j]<mi)
{
mi=d[j];
poz=j;
}
s[poz]=1;
for(j=1;j<=n;j++)
if(d[j]>d[poz]+a[poz][j]&&s[j]==0)
{
d[j]=d[poz]+a[poz][j];
}
}
for(i=2;i<=n;i++)
if(d[i]<ma)
fout<<d[i]<<" ";
else
fout<<"0 ";
}