Pagini recente » Cod sursa (job #2650667) | Cod sursa (job #2163809) | Cod sursa (job #3041522) | Cod sursa (job #2688416) | Cod sursa (job #2344243)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int INF=2000000000,NMAX=101;
int n,m,a[NMAX][NMAX];
void Initializare()
{
int i,j;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
if(i==j) a[i][j]=0;
else a[i][j]=INF;
}
void read()
{
int x,y,c;
for(int i=1;i<=m;++i) {fin>>x>>y>>c; a[x][y]=c;}
fin.close();
}
void dijkstra(int x)
{
int S[NMAX]={0},D[NMAX],T[NMAX],minim=INF;
int i,k,imin,dmin;
S[x]=1;
for(i=1;i<=n;++i)
{
D[i]=a[x][i];
if(D[i]<INF) T[i]=x;
else T[i]=0;
}
T[x]=0;
for(k=1;k<=n-1;++k)
{
dmin=INF;
for(i=1;i<=n;++i)
if(S[i]==0 && D[i]<dmin)
{
dmin=D[i];
imin=i;
}
S[imin]=1;
for(i=1;i<=n;++i)
if(S[i]==0 && D[imin]+a[imin][i]<D[i])
{
D[i]=D[imin]+a[imin][i];
T[i]=imin;
}
}
for(i=2;i<=n;++i)
if(D[i]==INF) fout<<0<<" ";
else fout<<D[i]<<" ";
}
int main()
{
fin>>n>>m;
Initializare();
read();
dijkstra(1);
return 0;
}