Hay n cajas, numeradas del 1 al n . Cada casilla está bloqueada, de modo que solo se puede abrir con un tipo de clave correspondiente (también numerada de 1 a n ). Estas claves se distribuyen aleatoriamente en los cuadros (un cuadro puede tener cualquier número de claves, una clave puede tener cualquier número de duplicados), y luego todos los cuadros se cierran. También se ha encerrado un tesoro (numerado 0 ) en muchas de las cajas.
Has contratado a un cerrajero para recuperar todo el tesoro. Cobra por cada caja que abre. No hay ningún cargo por abrir una caja para la cual la llave ya está disponible.
La entrada es el contenido de cada cuadro. Puede decidir el formato de la entrada.
Produzca el costo mínimo requerido para obtener los tesoros.
Notas
- Su algoritmo puede llevar mucho tiempo, pero eso es irrelevante.
- El código más corto gana.
- No es necesario preocuparse por la entrada no válida.
Data de muestra
Aquí la línea i representa las claves presentes en el cuadro i .
Entrada
2 0
3
4 0
5 6 0
6
0
Salida
1
Entrada
2 0
3 0
4 0
6
5 0
Salida
3
Entrada
2 4 0
3 0
1 0
6
5 0
Salida
2
Entrada
1
3 4
2 6
5
Salida
0
[[1] [3 4] [] [] [2 6] [5]]
o tal vez {{1},{3,4},{},{},{2,6},{5}}
. De esta manera, la mayoría de los idiomas pueden reducir la lectura de la entrada a algo tan trivial como i=eval(read())
centrarse en la parte divertida del desafío.