Menu
CoddyTech

Redundant Connection

Una red comenzó como un árbol: n nodos, numerados del 1 al n, unidos por n-1 aristas no dirigidas sin ciclos. Después se añadió una arista más entre dos nodos que no estaban unidos directamente, así que la lista edges ahora contiene n aristas y exactamente un ciclo.

Devuelve una arista que puedas eliminar para que las otras n-1 aristas vuelvan a formar un árbol. Si hay varias aristas que sirven, devuelve la que aparece en último lugar en edges, como el par [a, b] exactamente tal como está escrito allí.

Función

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
las n aristas no dirigidas, cada una un par [a, b] de nodos numerados del 1
Devuelveinteger-array
la arista del ciclo que aparece al final en edges, escrita tal como aparece allí

Restricciones

  • 3 ≤ n ≤ 5000, donde n = edges.length
  • edges[i] = [a, b] con 1 ≤ a, b ≤ n y a ≠ b
  • No aparece ninguna arista dos veces, en ninguna dirección.
  • Las aristas conectan los n nodos y contienen exactamente un ciclo.

Ejemplos

Entrada
edges = [[1, 2], [1, 3], [2, 3]]
Salida
[2, 3]
Explicación
Las tres aristas forman el triángulo 1, 2, 3, así que quitar cualquiera de ellas deja un árbol. [2, 3] aparece al final de la lista.
challenge icon

Para ir más allá

Si las aristas estuvieran dirigidas y el grafo original fuera un árbol enraizado, ¿qué arista eliminarías cuando la arista adicional le da a un nodo dos padres?

Restablecer código
def findRedundantConnection(edges):
    # Escribe el código aquí

Prueba #1

Prueba #2

Argumento

edges = [[1, 2], [1, 3], [2, 3]]

Salida Esperada

[2, 3]