Un gráfico bipartito es un gráfico cuyos vértices se pueden dividir en dos conjuntos disjuntos, de modo que ningún borde conecte dos vértices en el mismo conjunto. Un gráfico es bipartito si y solo si tiene 2 colores.
Desafío
Su tarea es, dada la matriz de adyacencia de un gráfico simple no dirigido, determinar si es un gráfico bipartito. Es decir, si un borde conecta los vértices i y j, tanto (i, j) como (j, i) la entrada de la matriz son 1.
Como el gráfico no está dirigido y es simple, su matriz de adyacencia es simétrica y contiene solo 0 y 1.
Detalles específicos
Debe tomar una matriz N-por-N como entrada (en cualquier forma, por ejemplo, lista de listas, lista de cadenas, tipo C int**
y tamaño, matriz aplanada, entrada sin formato, etc.).
La función / programa debería devolver / generar un valor verdadero si el gráfico es bipartito, y falso de lo contrario.
Casos de prueba
['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
Puntuación
Las construcciones que calculan la respuesta directamente están prohibidas.
Este es el código de golf , por lo que gana el programa más corto (en bytes) para finales de este mes.
-1
por falso y cualquier número entero no negativo por verdadero?
0
-> Falsy, >0
-> Truthy generalmente está permitido por las reglas estándar de verdad / falsedad. -1
y ≥ 0
no es tan común, por eso lo pregunté.