Pagini recente » Cod sursa (job #2967067) | Cod sursa (job #2048169) | Cod sursa (job #2861944) | Cod sursa (job #66037) | Cod sursa (job #2185550)
#include <fstream>
#include <climits>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,c[1001][1001],m,tata[50100],k,mini,x,viz[50100],d[50100];
void solve (int s)
{
int i;
for(i=1;i<=n;i++)d[i]=INT_MAX/2;
d[s]=0;tata[s]=0;
for(k=1;k<=n;k++)
{
mini=INT_MAX;x=0;
for(i=1;i<=n;i++)
if(viz[i]==0&&d[i]<mini){mini=d[i];x=i;}
if(x!=0)
{
viz[x]=1;
for(i=1;i<=n;i++)
{
if(d[x]+c[x][i]<d[i])
{
d[i]=d[x]+c[x][i];
tata[i]=x;
}
}
}
}
}
int i,j,y,val;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)c[i][j]=0;
else c[i][j]=INT_MAX/2;
for(i=1;i<=m;i++)
{
f>>x>>y>>val;
c[x][y]=val;
// c[y][x]=val;
}
solve(1);
for(i=2;i<=n;i++)
if(d[i]!=INT_MAX/2) g<<d[i]<<" ";
else g<<0<<" ";
return 0;
}