Pagini recente » Cod sursa (job #2921425) | Cod sursa (job #2530031) | Cod sursa (job #619847) | Cod sursa (job #2069644) | Cod sursa (job #868234)
Cod sursa(job #868234)
#include<fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=30000;
float a[50000][50000],d[50000];
int s[50000],t[50000],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;
}