Pagini recente » Cod sursa (job #1840887) | Cod sursa (job #647158) | Cod sursa (job #1932680) | Cod sursa (job #2795615) | Cod sursa (job #2421020)
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int a[101][101], n, p, i, j, c;
int d[101], s[101], t[101], mini, poz, maxi = 10000000;
int main()
{
f >> 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] = maxi;
while(f >> 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] < maxi)
t[i] = p;
}
for(i = 1; i <= n - 1; i++)
{
mini = maxi;
for(j = 1; j <= n; j++)
if(s[j] == 0)
if(d[j] < mini)
{
mini = 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] < 10000000)
g << d[i] << " ";
else g << -1 << " ";
return 0;
}