Завантажте застосунок
Виберіть папку й попросіть помічника прочитати потрібні файли перед редагуванням. Визначте мету та межі завдання.
Знайдіть паросполучення максимальної потужності між двома групами до 32 вершин за множинами дозволених ребер. Перевірте ізольовані вершини та перепризначення збільшувальним шляхом, відхиляючи хибні індекси без зміни множин.
Виберіть папку й попросіть помічника прочитати потрібні файли перед редагуванням. Визначте мету та межі завдання.
Оберіть сумісний endpoint. Доступність інструментів і якість відповідей залежать від налаштованої моделі та сервера.
Переглядайте зміни й результати команд. Перед прийняттям результату виконайте перевірки проєкту; створений код не тестується автоматично.
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
def maximum_matching(edges, right_count):
if type(right_count) is not int or not 0 <= right_count <= 32 or type(edges) not in (list, tuple) or len(edges) > 32:
raise ValueError("matching.size")
if any(type(row) not in (set, frozenset) or any(type(v) is not int or not 0 <= v < right_count for v in row) for row in edges):
raise ValueError("matching.edge")
owners = [-1] * right_count
def augment(left, seen):
for right in sorted(edges[left]):
if right in seen:
continue
seen.add(right)
if owners[right] == -1 or augment(owners[right], seen):
owners[right] = left
return True
return False
for left in range(len(edges)):
augment(left, set())
return sorted((left, right) for right, left in enumerate(owners) if left != -1)Перевірте перед застосуванням. Переглядайте зміни й результати команд. Перед прийняттям результату виконайте перевірки проєкту; створений код не тестується автоматично.