r (i = 0; i
if ((l [result]> l [i]) && (! flag [i])) result = i;
return result;
}
word minim (word x, word y)
{
if (x
return y;
}
void main ()
{
cout <<"Vvedite kolichestvo tochek: ";
cin>> n; p> for (i = 0; i
for (j = 0; j
for (i = 0; i
for (j = i +1; j
{
cout <<"Vvedite rasstoyanie ot x" <
cin>> c [i] [j];
}
cout <<" "; p> for (i = 0; i
cout <
for (i = 0; i
{
printf ("X% d", i +1);
for (j = 0; j
{
printf ("% 6d", c [i] [j]),
c [j] [i] = c [i] [j];
}
printf (" n n");
}
for (i = 0; i
for (j = 0; j
if (c [i] [j] == 0) c [i] [j] = 65535;// нескінченність
cout <<"Vvedite nachalnuy tochku: ";
cin>> xn;
cout <<"Vvedite konechnuy tochku: ";
cin>> xk;
xk -;
xn -;
if (xn == xk)
{
cout <<"Nachalnaya I konechnaya tochki sovpadayt. "<
getch ();
return;
}
for (i = 0; i
{
flag [i] = 0;
l [i] = 65535;
}
l [xn] = 0;
flag [xn] = +1;
p = xn;
itoa (xn +1, s, 10);
for (i = 1; i <= n; i + +)
{
strcpy (path [i], "X");
strcat (path [i], s);
}
do
{
for (i = 0; i
if ((c [p] [i]! = 65535) && (! flag [i]) && (i! = p))
{
if (l [i]> l [p] + c [p] [i])
{
itoa (i +1, s, 10);
strcpy (path [i +1], path [p +1]);
strcat (path [i +1], "-X");
strcat (path [i +1], s);
}
l [i] = minim (l [i], l [p] + c [p] [i]);
}
p = min (n);
flag [p] = 1;
}
while (p! = xk);
if (l [p]! = 65535)
{
cout <<"Put: "<
cout <<"Dlina puti: "<
}
else
cout <<"takogo puti ne syshestvuet! "<
getch ();
}
Додаток Б
Результат
В
Додаток В
Схема програмної реалізації алгоритму Дейкстри
В