Menu
CoddyTech

Redundant Connection

Un réseau a commencé sous forme d’arbre : n nœuds, numérotés de 1 à n, reliés par n-1 arêtes non orientées sans cycle. Puis une arête supplémentaire a été ajoutée entre deux nœuds qui n’étaient pas directement reliés, de sorte que la liste edges contient maintenant n arêtes et exactement un cycle.

Renvoie une arête que tu peux supprimer afin que les n-1 autres arêtes forment à nouveau un arbre. Si plusieurs arêtes conviennent, renvoie celle qui apparaît en dernier dans edges, sous la forme de la paire [a, b], exactement comme elle est écrite.

Fonction

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
les n arêtes non orientées, chacune étant une paire [a, b] de nœuds numérotés à partir de 1
Renvoieinteger-array
l’arête du cycle qui apparaît en dernier dans edges, écrite telle qu’elle y figure

Contraintes

  • 3 ≤ n ≤ 5000, où n = edges.length
  • edges[i] = [a, b] avec 1 ≤ a, b ≤ n et a ≠ b
  • Aucune arête n’apparaît deux fois, dans un sens ou dans l’autre.
  • Les arêtes relient tous les n nœuds et forment exactement un cycle.

Exemples

Entrée
edges = [[1, 2], [1, 3], [2, 3]]
Sortie
[2, 3]
Explication
Les trois arêtes forment le triangle 1, 2, 3, donc en supprimer une laisse un arbre. [2, 3] vient en dernier dans la liste.
challenge icon

Pour aller plus loin

Si les arêtes étaient orientées et que le graphe d’origine était un arbre enraciné, quelle arête supprimeriez-vous lorsque l’arête supplémentaire donne deux parents à un nœud ?

Réinitialiser le code
def findRedundantConnection(edges):
    # Écrivez le code ici

Test #1

Test #2

Argument

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

Résultat attendu

[2, 3]