На самом деле бред, но если заменить кириллицу на латинские символы (чтобы можно было проверить результат) это будет выглядеть примерно так:
Код
type
name = (vasya, volodya, ira, lida, marina, misha);
guests = set of name;
group = array[name] of guests;
const
_group: group =
([volodya, misha],
{ Володя и Миша были в гостях у Васи (№1 в списке имен) }
[vasya, lida, ira, misha], { и т.д. }
[misha, vasya, marina],
[misha, vasya, ira],
[volodya{misha}],
[vasya, ira]);
function vezde(gr: group): boolean;
var
i, j: name;
res: boolean;
was: set of name;
begin
res := false;
{ Перебор всех студентов группы (I - очередной студент) }
for i := low(name) to high(name) do
begin
{ was будет содержать всех, у кого в гостях был I }
was := [];
for j := low(name) to high(name) do
{ Если I был в гостях у J, то добавить его к списку }
if (i in gr[j]) then was := was + [j];
{ если список тех, у кого в гостях побывал I
(вместе с самим I) содержит всех учащихся
группы, это значит, что I побывал в гостях у всех остальных.
Только в этом случае Res будет равно True }
res := res or ((was + [i]) = [low(name) .. high(name)])
end;
{ возвращаем результат }
vezde := res
end;
begin
writeln(vezde(_group))
end.