Dwudzielny wykres przedstawia wykres, którego wierzchołki mogą być podzielone na dwa zestawy rozłącznego, tak że nie ma krawędź łączy dwa wierzchołki w jednym zestawie. Wykres jest dwustronny wtedy i tylko wtedy, gdy jest dwukolorowy.
Wyzwanie
Twoim zadaniem jest, biorąc pod uwagę macierz przylegania niekierowanego prostego wykresu, ustalenie, czy jest to wykres dwustronny. To znaczy, jeśli krawędź łączy wierzchołki i i j, zarówno (i, j), jak i (j, i) wejście macierzy to 1.
Ponieważ wykres jest bezkierunkowy i prosty, jego macierz przylegania jest symetryczna i zawiera tylko 0 i 1.
Specyfika
Powinieneś wziąć macierz N-na-N jako dane wejściowe (w dowolnej formie, np. Lista list, lista ciągów, typ C int**
i rozmiar, spłaszczona tablica, surowe dane wejściowe itp.).
Funkcja / program powinien zwrócić / wyprowadzić prawdziwą wartość, jeśli wykres jest dwustronny, a fałsz w przeciwnym razie.
Przypadki testowe
['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
Punktacja
Wbudowane, które obliczają odpowiedź bezpośrednio, są zbanowane.
To jest golf golfowy , więc wygrywa najkrótszy program (w bajtach) do końca tego miesiąca!
-1
do fałszywości i jakiejkolwiek nieujemnej liczby całkowitej dla prawdy?
0
-> Falsy, >0
-> Prawda jest na ogół dozwolona przez standardowe reguły dotyczące prawdy / fałszu. -1
i ≥ 0
nie jest tak powszechne, dlatego zapytałem.