Pagini recente » Cod sursa (job #961915) | Cod sursa (job #113934) | Cod sursa (job #2730176) | Cod sursa (job #1308964) | Cod sursa (job #2127128)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int a[101][101],n,m,d[1001],p[1001];
const int inf=10000;
void citire()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,c;
f>>x>>y>>c;
a[x][y]=c;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(i==j) a[i][j]=0;
else if(!a[i][j]) a[i][j]=inf;
}
}
void dijkstra(int k)
{int j,minn;
for(int i=1;i<=n;i++)
{
d[i]=a[k][i];
p[i]=0;
}
p[k]=1;
for(int k=1;k<n;k++)
{
minn=inf+1;
for(int i=2;i<=n;i++)
if(minn>d[i] && !p[i]){minn=d[i];j=i;}
for(int i=1;i<=n;i++)
if(d[i]>d[j]+a[j][i])
d[i]=d[j]+a[j][i];
p[j]=1;
}
}
int main()
{citire();
dijkstra(1);
for(int i=2;i<=n;i++)
g<<d[i]<<" ";
return 0;
}