Pagini recente » Cod sursa (job #2755392) | Cod sursa (job #2611614) | Cod sursa (job #1317665) | Cod sursa (job #2660546) | Cod sursa (job #868237)
Cod sursa(job #868237)
#include<fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=30000;
float a[5000][5000],d[5000];
int s[5000],t[5000],n,r;
void cit();
int main()
{
int i,j,poz;
float min;
cit();
s[r]=1;
for(i=1;i<=n;i++)
{
d[i]=a[1][i];
if(i!=1)
if(d[i]<INF)t[i]=1;
}
for(i=1;i<=n-1;i++)
{
min=INF;
for(j=1;j<=n;j++)
if(s[j]==0)
if(d[j]<min)
{
min=d[j];
poz=j;
}
s[poz]=1;
for(j=1;j<=n;j++)
if(s[j]==0)
if(d[j]>d[poz]+a[poz][j])
{
d[j]=d[poz]+a[poz][j];
t[j]=poz;
}
}
for(i=1;i<=n;i++)
if(i!=1)g<<d[i]<<' ';
g<<'\n';
g.close();
return 0;
}
void cit()
{
f>>n>>r;
int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)a[i][j]=INF;
while(f>>i>>j>>k)
a[i][j]=k;
}