Pagini recente » Cod sursa (job #705199) | Cod sursa (job #618301) | Cod sursa (job #2062012) | Cod sursa (job #1696726) | Cod sursa (job #512892)
Cod sursa(job #512892)
#include<fstream>
using namespace std;
#define Inf 10000
int a[50][50],n,viz[50],cost[50],m,x0=1,pre[50];
void citire()
{
ifstream in("dijkstra.in");
int i,j,k;
in>>n;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
a[i][j]=Inf;
while(in>>i>>j>>k)
a[i][j]=a[j][i]=k;
in.close();
}
void dijkstra()
{
int i,j,dmin,vfmin;
for(i=1;i<=n;i++)
{
cost[i]=a[x0][i];
pre[i]=x0;
}
viz[x0]=1;
pre[x0]=0;
for(j=1;j<n;j++)
{
dmin=Inf;
for(i=1;i<=n;i++)
if(!viz[i]&&cost[i]<dmin)
{
dmin=cost[i];
vfmin=i;
}
viz[vfmin]=1;
for(i=1;i<=n;i++)
if(!viz[i]&&cost[i]>dmin+a[vfmin][i])
{
pre[i]=vfmin;
cost[i]=dmin+a[vfmin][i];
}
}
}
int main ()
{
int i;
ofstream out ("dijkstra.out");
citire();
dijkstra();
for(i=2;i<=n;i++)
out<<cost[i]<<" ";
out.close();
return 0;
}