Pagini recente » Cod sursa (job #2645399) | Cod sursa (job #1422143) | Cod sursa (job #3210791) | Cod sursa (job #1440912) | Cod sursa (job #2884674)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("dijkstra.in");
ofstream out ("dijkstra.out");
int a[101][101], n,p,i,j,c;
int d[101], s[101], t[101], minim, poz, Max=1000000;
int main () {
in>>n>>p;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(i==j)
a[i][j] = 0;
else
a[i][j] = Max;
while (in>>i>>j>>c)
a[i][j] = c;
s[p] = 1;
for (i=1; i<=n; i++) {
d[i] = a[p][i];
if (i!=p)
if (d[i]<Max)
t[i] = p;
}
for (i=1; i<=n-1; i++) {
minim = Max;
for (j=1; j<=n; j++)
if (s[j]==0)
if (d[j] < minim) {
minim = d[j];
poz = j;
}
s[poz] = 1;
for (j=1; j<=n; j++)
if (s[j]==0)
if (d[j] > d[poz]+a[poz][j]) {
d[j] = d[poz] + a[poz][j];
t[j] = poz;
}
}
for (i=1; i<=n; i++)
if (d[i]<1000000)
out<<d[i]<<" ";
else
out<<-1<<" ";
return 0;
}