Pagini recente » Cod sursa (job #2531255) | Cod sursa (job #1471823) | Cod sursa (job #877756) | Cod sursa (job #661529) | Cod sursa (job #675771)
Cod sursa(job #675771)
#include <iomanip>
#include <fstream>
using namespace std;
fstream fin("dijkstra.in", ios::in);
fstream fout("dijkstra.out", ios::out);
void dijkstra(int a[55][55], int n, int d[55]){
int p[55],v[55],minim,i,j,pozmin;
for (i=1;i<=50;i++){
d[i]=2000; p[i]=0; v[i]=0;
}
d[1]=0;
for (i=1;i<=n-1;i++){
minim=2000; pozmin=2000;
for (j=1;j<=n;j++){
if ((minim>d[j])&&(v[j]==0)){
minim=d[j];
pozmin=j;
}
}
if (minim==2000) break;
v[pozmin] = 1;
for (j=1;j<=n;j++){
if ((v[j]==0)&&(d[pozmin]+a[pozmin][j]<d[j])){
d[j] = d[pozmin]+a[pozmin][j];
p[j] = pozmin;
}
}
}
}
int main(){
int n,m,i,j,x,y,z,a[55][55],d[55];
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++) a[i][j]=2000;
for (i=1;i<=m;i++)
{
fin>>x>>y>>z;
a[x][y]=z; a[y][x]=z;
}
dijkstra(a,n,d);
for (i=2;i<=n;i++) fout<<d[i]<<" ";
fin.close(); fout.close();
return 0;
}