Pagini recente » Cod sursa (job #2908790) | Cod sursa (job #623991) | Cod sursa (job #1476286) | Cod sursa (job #3132627) | Cod sursa (job #508877)
Cod sursa(job #508877)
#include<fstream>
using namespace std;
int a[50][50],n,viz[50],cost[50],m;
void citire()
{
ifstream in("dijkstra.in");
int i,j,k;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
a[i][j]=-1;
in>>n>>m;
while(in>>i>>j>>k)
a[i][j]=a[j][i]=k;
in.close();
}
void dijkstra()
{
int dmin=3200,min,i,ok=0,nc=1;
for(i=1;i<=n;i++)
cost[i]=3200;
cost[nc]=0;
viz[nc]=1;
while(ok==0)
{dmin=3200;
for(i=2;i<=n;i++)
{
if(a[nc][i]!=0&&viz[i]==0)
{
if(a[nc][i]<dmin)
{min=i;
dmin=a[nc][i];
}
if((a[nc][i]+cost[nc])<cost[i])
cost[i]=a[nc][i]+cost[nc];
}
}
viz[nc]=1;
nc=min;
ok=1;
for(i=1;i<=n;i++)
if(viz[i]==0)
ok=0;
}
}
int main ()
{
int i;
ofstream out ("dijkstra.out");
citire();
dijkstra();
for(i=2;i<=n;i++)
out<<cost[i]<<" ";
out.close();
return 0;
}