Crea una lista de números únicos aplicando cierre transitivo

Tengo una lista de tuplas (cada tupla consta de 2 números) como:

array = [(1, 2), (1, 3), (2, 4), (5, 8), (8, 10)]

Digamos que estos números son identificadores de algunos objetos db (registros) y dentro de una tupla, hay identificadores de objetos duplicados. Lo que significa que 1 y 2 están duplicados. 1 y 3 están duplicados, lo que significa que 2 y 3 también están duplicados.

si a == b y b == c entonces a == c

Ahora quiero fusionar todos estos ID de objetos duplicados en una sola tupla como esta:

output = [(1, 2, 3, 4), (5, 8, 10)]

Sé que puedo hacer esto usando bucles y coincidencias redundantes. Solo quiero una solución mejor con bajo procesamiento / cálculos (si hay alguno).

Respuestas a la pregunta(3)

Su respuesta a la pregunta