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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2010, 12:43   #1
Капелька
 
Регистрация: 24.05.2009
Сообщений: 3
По умолчанию Двудольные графы

задача: поиск наибольшего паросочетания в двудольном графе
Код:
program q;
uses crt;
const
max=9;
t:boolean=true;
f:boolean=false;
var
a:array[1..max,1..max] of integer;
v:array[1..max] of boolean;
r:array[1..max] of integer;
n, m, i, j, cnt: integer;

 function piosk(j:integer): boolean;
  {пытается найти вершине j пару}
  var i: integer;
   begin
    if v[j] then
    {j в текущем паросочетании уже просмотрена}
      begin
       piosk:=false;
       exit
      end;
    v[j]:= true;
    for i:= 1 to n do
     if (a[i, j]<>0) {ребро между i и j существует}
      and ((r[i] = 0) {у i еще нет пары}
       or {пару i можно пристроить к другой вершине, для чего нужно построить чередующуюся цепочку}
        piosk(r[i])) then
             begin
              piosk:=true;
              r[i]:=j;
              exit
             end;
    piosk:=false
    end;

procedure Matrix;
begin
write('Введите количество вершин: ');
read(m);
writeln('Введите матрицу паросочетания:');
for i:=1 to m do
 for j:=1 to m do
  begin
   write('a[',i,',',j,']=');
   read(a[i,j]);
  end;
//вывод матрицы
for i:=1 to m do
 begin
 for j:=1 to m do
 write(a[i,j],' ');
  writeln;
  end;
end;


begin
clrscr;
Matrix;{здесь вводим описание графа}
//fillchar(r,sizeof(r),0);
cnt:=0;{счетчик ребер в паросочетании}
for j:= 1 to m do
{каждой вершине одного из множеств пытаемся найти пару}
  begin
   //fillchar(v, sizeof(v),false);
   
   if piosk(j) then inc(cnt)
  end;
writeln(cnt);
 for i:= 1 to n do
  if r[i] <> 0 then
   write(i,' ',r[i])
  end.
выдает ошибку на fillchar, помогите пожалуйста(((

Последний раз редактировалось Капелька; 18.11.2010 в 12:56.
Капелька вне форума Ответить с цитированием
Старый 18.11.2010, 12:44   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Слушаемся, о повелитель !
Разрешите приступить ?

А может, стоит прочесть правила раздела "Паскаль", а ?
П.7 - о-о-очень интересный...

Перенесено.
mihali4 вне форума Ответить с цитированием
Старый 18.11.2010, 12:54   #3
Капелька
 
Регистрация: 24.05.2009
Сообщений: 3
По умолчанию

sorry, моя ошибка, не прочитала ранее( спасибо...
Капелька вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графы С++ Sxronjkeee Помощь студентам 0 12.11.2010 22:06
Графы STeM Помощь студентам 14 09.06.2010 09:32
Графы Dead Romantic Помощь студентам 4 31.05.2010 13:25
Графы на С++ corri Общие вопросы C/C++ 3 03.10.2009 01:42
графы paladinn Помощь студентам 1 07.06.2009 18:04