Pagini recente » Cod sursa (job #1566911) | Rating Stefan Tiberiu (StefanAndrei12) | Cod sursa (job #2287848) | Cod sursa (job #2615570) | Cod sursa (job #2176302)
#include <iostream>
#include <fstream>
#include <values.h>
#define inf 21000
using namespace std;
ofstream g("dijkstra.out");
int mat[1000][1000],s[1000],d[1000],n,m;
void citire()
{
int x,y,z;
ifstream f("dijkstra.in");
f>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++)
mat[i][j]=mat[j][i]=inf;
for(int i=1;i<=m;i++)
{
f>>x>>y>>z;
mat[x][y]=z;
}
f.close();
}
int main()
{
citire();
int i,j,r=1;
s[r]=1;
for(i=1;i<=n;i++)
d[i]=mat[r][i];
int mini,poz;
for(i=1;i<=n;i++)
{
mini=inf;
for(j=1;j<=n;j++)
if(s[j]==0)
if(d[j]<mini)
{
mini=d[j];
poz=j;
}
s[poz]=1;
for(j=1;j<=n;j++)
if(s[j]==0)
if(d[j]>d[poz]+mat[poz][j])
{
d[j]=d[poz]+mat[poz][j];
// t[j]=poz;
}
}
for(i=1;i<=n;i++)
if(r!=i && d[i]!=inf)
g<<d[i]<<' ';
return 0;
}