Ci sono n caselle, numerate 1-n . Ogni casella è bloccata, in modo che possa essere aperta da un solo tipo di chiave corrispondente (anch'essa numerata 1-n ). Queste chiavi sono sparse casualmente nelle caselle (una casella può avere un numero qualsiasi di chiavi, una chiave può avere un numero qualsiasi di duplicati) e quindi tutte le caselle vengono chiuse. Un tesoro (numerato 0 ) è stato anche bloccato in molte caselle.
Hai assunto un fabbro per recuperare tutto il tesoro. Fa pagare per ogni scatola che apre. Non ci sono costi per l'apertura di una scatola per la quale la chiave è già disponibile.
L'input è il contenuto di ogni casella. Puoi decidere il formato dell'input.
Output il costo minimo richiesto per ottenere i tesori.
Appunti
- Il tuo algoritmo potrebbe richiedere molto tempo, ma questo è irrilevante.
- Il codice più corto vince.
- Non è necessario preoccuparsi di input non validi.
Dati di esempio
Qui la riga i rappresenta le chiavi presenti nella casella i .
Ingresso
2 0
3
4 0
5 6 0
6
0
Produzione
1
Ingresso
2 0
3 0
4 0
6
5 0
Produzione
3
Ingresso
2 4 0
3 0
1 0
6
5 0
Produzione
2
Ingresso
1
3 4
2 6
5
Produzione
0
[[1] [3 4] [] [] [2 6] [5]]
o forse {{1},{3,4},{},{},{2,6},{5}}
. In questo modo, la maggior parte delle lingue può ridurre la lettura dell'input a qualcosa di così banale i=eval(read())
e concentrarsi sulla parte divertente della sfida.