Pagini recente » Cod sursa (job #2358995) | Cod sursa (job #18787) | Cod sursa (job #1478245) | Cod sursa (job #2484422) | Cod sursa (job #659184)
Cod sursa(job #659184)
#include<fstream>
#include<iostream>
using namespace std;
int main ()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int i,n,j,l,inf=999999,min,poz,marcate=0,m;
f>>n>>m;
int d[n+1],t[n+1],a[n+1][n+1],marc[n+1];
for(i=1;i<=n;i++)
for(j=i,marc[i]=0;j<=n;j++)
{
if(i!=j)a[i][j]=a[j][i]=inf;
else a[i][j]=0;
}
while(f>>i>>j>>l)
a[i][j]=l;
d[1]=0;t[1]=1;
for(i=2;i<=n;i++)
{
d[i]=a[1][i];
t[i]=1;
}
marc[1]=1;marcate++;
while(marcate!=n-1)
{
min=inf;poz=0;
for(i=2;i<=n;i++)
if(marc[i]==0 and d[i]<min){min=d[i];poz=i;}
marc[poz]=1;
marcate++;
for(i=2;i<=n;i++)
if(d[poz]+a[poz][i]<d[i])
{
d[i]=d[poz]+a[poz][i];
t[i]=poz;
}
}
for(i=2;i<=n;i++)
if(d[i]==inf)g<<"0 ";
else g<<d[i]<<" ";
g<<"\n";
f.close();
g.close();
return 0;
}