Pagini recente » Cod sursa (job #2917979) | Cod sursa (job #2975744) | Cod sursa (job #262149) | Cod sursa (job #1420718) | Cod sursa (job #871914)
Cod sursa(job #871914)
#include <fstream>
#define INF 999999999
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int c[5000][5000],n,m,d[50000],t[50000],minim,k;
bool sel[50000];
void dij(int p)
{
int i,j;
bool ok;
for(i=1;i<=n;i++)
{
t[i]=0;
d[i]=INF; sel[i]=false;
}
d[p]=0;
t[p]=0;
ok=true;
for(i=1; i<=n && ok; i++)
{
minim=INF;
for(j=1;j<=n;j++)
if(d[j] < minim && !sel[j])
{
minim = d[j];
k = j;
}
if(minim==INF)
ok=false;
else{
sel[k]=true;
for(j=1;j<=n;j++)
if(d[j]>d[k]+c[k][j]&& !sel[j])
{d[j]=d[k]+c[k][j];
t[j]=k;
}
}
}
}
int main()
{
int i,j,x,y,z;
f>>n>>m;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
c[i][j]=INF;
c[i][i]=0;
}
for(i=1;i<=m;i++)
{
f>>x>>y>>z;
c[x][y]=z;
}
dij(1);
for(i=2;i<=n;i++)
if (d[i]==INF)
d[i]=0;
for (i=2; i<=n; i++)
g<<d[i]<<" ";
return 0;
}