Fusionar cuentas
Tienes \(n\) cuentas; cada una tiene un nombre y una lista de correos. Dos cuentas son de la misma persona si comparten algún correo (y, transitivamente, si hay una cadena de cuentas que comparten correos de a pares). Las cuentas de una misma persona siempre tienen el mismo nombre, pero dos personas distintas pueden llamarse igual.
Fusiona las cuentas de cada persona en una sola, con todos sus correos sin repetir.
Entrada
La primera línea tiene \(n\) \((1 \le n \le 2 \cdot 10^4)\). Cada una de las siguientes \(n\) líneas tiene un nombre, la cantidad de correos \(m\) \((1 \le m \le 10)\) y los \(m\) correos. Nombres y correos no tienen espacios y miden a lo más \(30\) caracteres.
Salida
En la primera línea, la cantidad de personas. Luego una línea por persona: su nombre seguido de sus correos
ordenados (por orden ASCII, como strcmp). Las personas van ordenadas según su correo más chico.
Ejemplo 1
Entrada
4
John 3 johnsmith@mail.com john_newyork@mail.com john00@mail.com
John 2 johnsmith@mail.com john00@mail.com
Mary 1 mary@mail.com
John 1 johnnybravo@mail.com
Salida
3
John john00@mail.com john_newyork@mail.com johnsmith@mail.com
John johnnybravo@mail.com
Mary mary@mail.com
Ejemplo 2
Entrada
3
Ana 2 a@x.cl b@x.cl
Ana 2 c@x.cl d@x.cl
Ana 2 d@x.cl a@x.cl
Salida
1
Ana a@x.cl b@x.cl c@x.cl d@x.cl
Basado en el problema 721 de LeetCode, Accounts Merge, adaptado a entrada y salida estándar; enunciado redactado para este juez. Es parte de la lista Grind 75 de Yangshun Tay.
Comentarios