Existem n caixas, numeradas de 1-n . Cada caixa está bloqueada, de modo que possa ser aberta por apenas um tipo de chave correspondente (também numerado de 1-n ). Essas chaves estão espalhadas aleatoriamente nas caixas (uma caixa pode ter qualquer número de chaves, uma chave pode ter qualquer número de duplicatas) e, em seguida, todas as caixas são fechadas. Um tesouro (com o número 0 ) também foi trancado em muitas das caixas.
Você contratou um serralheiro para recuperar todo o tesouro. Ele cobra por cada caixa que ele abre. Não há nenhum custo para abrir uma caixa para a qual a chave já está disponível.
Entrada é o conteúdo de cada caixa. Você pode decidir o formato da entrada.
Produza o custo mínimo necessário para obter os tesouros.
Notas
- Seu algoritmo pode levar um longo tempo, mas isso é irrelevante.
- O menor código vence.
- Não há necessidade de se preocupar com entrada inválida.
Dados de amostra
Aqui a linha i representa as chaves presentes na caixa i .
Entrada
2 0
3
4 0
5 6 0
6
0
Resultado
1
Entrada
2 0
3 0
4 0
6
5 0
Resultado
3
Entrada
2 4 0
3 0
1 0
6
5 0
Resultado
2
Entrada
1
3 4
2 6
5
Resultado
0
[[1] [3 4] [] [] [2 6] [5]]
ou talvez {{1},{3,4},{},{},{2,6},{5}}
. Dessa forma, a maioria dos idiomas pode reduzir a leitura da entrada para algo tão trivial quanto i=eval(read())
e se concentrar na parte divertida do desafio.