Pagini recente » Cod sursa (job #2190272) | Cod sursa (job #1074950) | Cod sursa (job #327228) | Cod sursa (job #2661378) | Cod sursa (job #1005001)
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m,A[1000][1000],inainte[1000],c[1000],a,b,d,i,j,viz[1000],s,v,nr,k,o;
int main()
{f>>n>>m;
for(i=1;i<=m;i++) {f>>a>>b>>d;A[a][b]=d;A[b][a]=d;}
s=1;
for(i=1;i<=n;i++) {c[i]=A[s][i];
inainte[i]=s;
if(A[s][i]>k)
{o=i;k=A[s][i];}
}
inainte[s]=0;
for(i=1;i<=n-2;i++)
{v=o;
for(j=1;j<=n;j++)
if(c[j]!=0&&c[j]<c[v]&&viz[j]==0) v=j;
if(v!=0)
{
viz[v]=1;
for(j=1;j<=n;j++)
if(A[v][j]!=0&&viz[j]==0&&(c[j]==0||c[v]+A[v][j]<c[j]))
{c[j]=c[v]+A[v][j];
inainte[j]=v;nr++;
}
}
else j=n;
}
for(i=2;i<=n;i++) g<<c[i]<<' ';
g<<'\n';
return 0;
}