Pagini recente » Cod sursa (job #356378) | Cod sursa (job #2957778) | Cod sursa (job #1330616) | Cod sursa (job #468176) | Cod sursa (job #2111693)
#include <bits/stdc++.h>
using namespace std;
const int INF=1e5 + 15;
bool sel[101];
int a[101][101],d[101],t[101],n,m,x,y,c,Min,k;
void read()
{
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; ++i)
scanf("%d %d %d", &x, &y, &c), a[x][y]=c;
}
void init()
{
for (int i = 1; i <= n; ++i)
for (int j = 1 ; j <= n; ++j)
if (!a[i][j] && i!=j) a[i][j]=INF;
}
void dijkstra()
{
for (int i = 1; i <= n; ++i)
{
Min=INF;
for (int j = 1; j <= n; ++j)
if (d[j]<Min && !sel[j]) Min=d[j], k=j;
sel[k]=true;
for (int j = 1; j <= n; ++j)
if (d[j]>d[k]+a[k][j] && !sel[j]) d[j]=d[k]+a[k][j],t[j]=k;
}
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
read();
init();
for (int i = 1; i <= n; ++i)
t[i]=0,d[i]=INF;
d[1]=0;
dijkstra();
for (int i = 2; i <= n; ++i)
printf("%d ", d[i]);
return 0;
}