Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2012, 19:33   #1
sergei15
 
Регистрация: 28.05.2012
Сообщений: 5
По умолчанию Найти все вершины графа

1) Найти все вершины графа, к которым существует путь заданной длины от выделенной его вершины.
2) К множеству целых чисел S, представленному в виде АВЛ-дерева, добавить число n так, чтобы множество S U {n} также оказалось представленным в виде АВЛ-дерева.
есть код для отыскания вершин графа недостижимых от заданной его вершины. Как переделать под мою задачу?

Код:
Program NonReachability;  
     Uses  Crt;
    Type Uk=^Rebro; {tip-ucazatel na rebro}
        Rebro=Record    {tip, opicivauhii rebro grafa}
     Ver1, Ver2 : Integer;      {verhini grafa}
     Next: Uk;              {ucazatel na cled rebro}
     Bool: Boolean;     {priznac proxogdenia po rebru}
        end;
Var  P, P1:Uk;   
     N, M, i, j, a : Word;
     Way : Set of Byte; {mnogectvo doctigimix verhin }
{____________________}
Procedure Input;
var i:word;
  Begin     
    Write(' Vvedite colichectvo verhin :  ');  ReadLn(N);
    Write(' Vvedite colichectvo reber:  ');      ReadLn(M);
    P:=nil;   {cepochca reber pucta}
    For i:= 1 to M do
       begin New(P1); {cozdanie novogo rebra}
        Write ('Vvedite 1-u verhinu`,i,`-go rebra:  ');  Read(P1^.Ver1);
        Write ('Vvedite 2-u verhinu`,i,`-go rebra:  ');  Read(P1^.Ver2);
        P1^.Bool :=TRUE;  P1^.Next :=P; {pricreplaem novoe rebro c naachalu}
        P:=P1;   {novoe rebro ctanovitca nachalom cepochki}
         end;
End; {of Input}
{_________________}
Procedure Poisk (i:Byte);
    Var tt:Uk;      {ukazatel na tecuchee rebro}
Begin
 Way:=Way+[i];  {dobavlaem verchinu vo mnogectvo doctigimix}
 tt:=p;         {peremechaem ucazatel na nachalo cepochci}
 While tt<>nil do {poca ne conec cepochki}
  begin If (i=tt^.Ver1) and tt^.Bool    {naxodim rebro kotoroe vixodit}
    then    {iz i-oi verhini v kotoroi ne bili}
    begin tt^.Bool := FALSE; {otmechaem chto prochli}
     Poisk(tt^.Ver2);    {uxodim na vtoruu verhinu}
     tt^.Bool := TRUE;  {cnimaem otmetcu o pocehenii }
    end;
    tt:=tt^.Next;
  end;
end; {of Poisk}
begin
  ClrScr;
    Input; {vvod grafa}
Write('zadaite verhinu dla cotoroi ihutca nedoctigimii verdhini: '); ReadLn(A);
    Way:=[];    {obnulaem mnogectvo doctigimix verhin}
    Poisk(A);   {procedura obxoda grafa}
    for j:=1 to N do
      if not (j in Way) then WriteLn( j, '-яia verhina nedoctigima iz verhini',  A);
    if Way = [1 .. N] then WriteLn('Vce verhini doctigimi iz verhini ', A);
    ReadLn
end.
sergei15 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все пути, соединяющие две вершины ориентированного графа. dasterse Помощь студентам 0 13.05.2012 18:38
путь от одной вершины графа к другой Катя Горбачева Помощь студентам 5 14.04.2011 20:05
найти все клики содержащие 4 вершины samazvanka Помощь студентам 0 01.06.2010 19:55
Как сравнить вершины графа на смежность(delphi7)? LightJulia Помощь студентам 2 30.05.2010 19:56
Координаты вершины графа в списке Glarus Помощь студентам 0 15.12.2009 20:21