Двочастковий граф являє собою графік, вершини якого можна розділити на два безлічі НЕ перетинаються, таким чином, що ні одне ребро не з'єднує дві вершини в одному наборі. Графік є двостороннім і тоді, і лише тоді, коли він є двоколірним.
Виклик
Ваше завдання полягає в тому, щоб, враховуючи матрицю суміжності непрямого простого графа, визначити, чи є це двобічний графік. Тобто, якщо ребро з'єднує вершини i і j, то і (i, j) і (j, i) запис матриці дорівнює 1.
Оскільки графік непрямий і простий, то його матриця суміжності симетрична і містить лише 0 і 1.
Особливості
Ви повинні взяти матрицю N-by-N (будь-яку форму, наприклад, список списків, список рядків, C-подібний int**
і розмір, сплющений масив, необроблений вхід тощо).
Функція / програма повинна повертати / виводити триєдне значення, якщо графік двосторонній, а помилковий помилковий.
Випробування
['00101',
'00010',
'10001',
'01000',
'10100'] : False
['010100',
'100011',
'000100',
'101000',
'010000',
'010000'] : True (divide into {0, 2, 4, 5} and {1, 3})
['00',
'00'] : True
Оцінка балів
Вбудовані, які безпосередньо обчислюють відповідь, заборонені.
Це код-гольф , тому найкоротша програма (в байтах) до кінця цього місяця виграє!
-1
за фальшивим чи будь-яким невід'ємним цілим числом для truthy?
0
-> Falsy, >0
-> Truthy, як правило, дозволено стандартними правилами truthy / falesy. -1
і ≥ 0
це не так часто, тому я запитав.