Pagini recente » Cod sursa (job #946723) | Cod sursa (job #2611882) | Cod sursa (job #3272132) | Cod sursa (job #1933007) | Cod sursa (job #1123686)
#include <fstream>
using namespace std;
#define Inf 1001
ofstream g("dijkstra.out");
int D[50001],T[50001],M[50001],C[22001][22001];
int n,m,p;
void init()
{
ifstream f("dijkstra.in");
f>>n>>m;int x,y,c;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
C[j][i]=C[i][j]=Inf;
for(int i=1;i<=m;i++)
{
f>>x>>y>>c;
C[x][y]=c;
}
for(int i=1;i<=n;i++)
{
T[i]=1;
D[i]=C[1][i];
}
M[1]=1; T[1]=0;
f.close();
}
void solve()
{
int i,dM,vf;
for(int j=1;j<n;j++)
{
dM=Inf;
for(int i=1;i<=n;i++)
if(D[i]<dM && !M[i])
{
vf=i; dM=D[i];
}
M[vf]=1;
for(int i=1;i<=n;i++)
{
if(M[i]==0 && D[i]>dM+C[vf][i])
{
T[i]=vf;
D[i]=dM+C[vf][i];
}
}
}
}
void show()
{
for(int i=2;i<=n;i++)
g<<D[i]<<' ';
}
int main()
{
init();
solve();
show();
return 0;
}