Pagini recente » Cod sursa (job #297571) | Cod sursa (job #3219463) | Cod sursa (job #2916101) | Cod sursa (job #2809027) | Cod sursa (job #3252637)
#include <fstream>
#include <iomanip>
#define MAX 2e9
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n, p, x, y, c, i, j, mn, poz;
int a[1602][1602], d[1602];
bool viz[1602];
int main()
{
f >> n >> p;
for(i = 1; i <= n; i ++)
for(j = 1; j <= n; j ++) if(i != j) a[i][j] = MAX;
while(f >> x >> y >> c) a[x][y] = c;
viz[p] = 1;
for(i = 1; i <= n; i ++) d[i] = a[p][i];
for(i = 1; i <= n - 1; i ++)
{
mn = 2e9;
for(j = 1; j <= n; j ++)
if(!viz[j] && d[j] < mn)
{
poz = j;
mn = d[j];
}
viz[poz] = 1;
for(j = 1; j <= n; j ++)
if(!viz[j] && d[j] > d[poz] + a[poz][j]) d[j] = a[poz][j] + d[poz];
}
for(i = 1; i <= n; i ++)
if(d[i] != MAX) g << d[i] << ' ';
else g << -1 << ' ';
return 0;
}