Menu
CoddyTech

Redundant Connection

Una rete è iniziata come un albero: n nodi, numerati da 1 a n, collegati da n-1 archi non orientati e senza cicli. Poi è stato aggiunto un altro arco tra due nodi che non erano collegati direttamente, quindi la lista edges contiene ora n archi e un solo ciclo.

Restituisci un arco che puoi rimuovere in modo che gli altri n-1 archi formino di nuovo un albero. Se ci sono più archi validi, restituisci quello che compare più avanti in edges, come coppia [a, b] esattamente come è scritta lì.

Funzione

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
gli n archi non orientati, ciascuno una coppia [a, b] di nodi numerati a partire da 1
Restituisceinteger-array
l'arco del ciclo che compare per ultimo in edges, scritto così com'è lì

Vincoli

  • 3 ≤ n ≤ 5000, dove n = edges.length
  • edges[i] = [a, b] con 1 ≤ a, b ≤ n e a ≠ b
  • Nessun arco compare due volte, in nessuna delle due direzioni.
  • The edge collegano tutti i n nodi e contengono esattamente un ciclo.

Esempi

Input
edges = [[1, 2], [1, 3], [2, 3]]
Output
[2, 3]
Spiegazione
I tre lati formano il triangolo 1, 2, 3, quindi rimuovendone uno qualsiasi si ottiene un albero. [2, 3] è l'ultimo elemento dell'elenco.
challenge icon

Per approfondire

Se gli archi fossero orientati e il grafo originale fosse un albero radicato, quale arco rimuoveresti quando l'arco aggiuntivo fa sì che un nodo abbia due genitori?

Ripristina il codice
def findRedundantConnection(edges):
    # Scrivi il codice qui

Test #1

Test #2

Argomento

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

Output atteso

[2, 3]