Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Pascal
Перезагрузить страницу помогите дописать программу, запомнить вершины, на которых зацикливание
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
holly_ holly_ вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.04.2018
Exclamation помогите дописать программу, запомнить вершины, на которых зацикливание - 30.04.2018, 19:55

Добрый день, очень нужна помощь. Есть алгоритм форда-беллмана с отрицательными рёбрами, на вершинах этих рёбер происходит зацикливание, нужно вывести эти вершины. (Pascal) Никак не могу это реализовать.
есть код для работы только с положительными значениями:
program Ford_Bellman;
uses crt;
const
inf=100000;
Vmax=1000;
Emax=Vmax*(Vmax-1) div 2;
type Edges=record
u, v, w: integer;
end;
Var
i, j, e, n, w, start: integer;
edge: array[1..Emax] of Edges;
d: array[1..Vmax] of integer;
{алгоритм Беллмана-Форда}
procedure FB(n, s: integer);
begin
for i:=1 to n do d[i]:=inf;
d[s]:=0;

for i:=1 to n-1 do
for j:=1 to e-1 do
if d[edge[j].v]+edge[j].w<d[edge[j].u] then
d[edge[j].u]:=d[edge[j].v]+edge[j].w;

for i:=1 to n do if d[i]=inf then
writeln(start, '->', i, '=', 'Not')
else writeln(start, '->', i, '=', d[i]);
end;
{основной блок программы}
begin
clrscr;
write('Количество вершин > '); read(n);
e:=1;

for i:=1 to n do
for j:=1 to n do
begin
write('Вес ', i, '->', j, ' > '); read(w);
if w<>0 then
begin
edge[e].v:=i;
edge[e].u:=j;
edge[e].w:=w;
e:=e+1;
end;
end;

write('Стартовая вершина > '); read(start);
writeln('Список кратчайших путей:');
FB(n, start);
end.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как дописать программу?. C (СИ) - C (СИ) уильям С/С++ 2 20.10.2017 19:14
Помогите дописать код! Yagami Light Prolog 7 25.05.2017 18:00
Помогите пожалуйста дописать код на VB 6.0 lingvo2015 Задания за деньги 1 23.03.2015 00:47
помогите дописать. wax123 Вопросы начинающих программистов 5 27.02.2013 07:01
Кто сможет помочь дописать программу? pasha51113 Задания за деньги 4 28.03.2012 21:59
Помогите дописать курсовую bomka С/С++ 2 30.11.2011 10:40
Помогите дописать код 77799 Java 0 08.11.2011 23:40
Нужно дописать мою программу. essenrick Pascal 0 11.03.2011 05:17
Помогите дописать программу.Списки.Турбо Пролог Irina0706 Prolog 1 08.01.2011 19:53
Нужно дописать дописать файл в формате rtf mico C++ Builder 1 17.10.2010 15:41
помогите дописать функцию }|{yk Visual Basic 4 16.10.2005 22:02
Помогите дописать чат Dmitriy PHP 1 04.10.2003 17:12



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов