Pagini recente » Cod sursa (job #227064) | Cod sursa (job #2881489) | Cod sursa (job #1303743) | Cod sursa (job #587730) | Cod sursa (job #863043)
Cod sursa(job #863043)
#include<fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=30000;
float a[50][50],d[50];
int s[100],t[100],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;
}