Jest n pól, ponumerowanych 1-n . Każde pudełko jest zablokowane, tak że można je otworzyć tylko jednym odpowiednim typem klucza (również ponumerowanym 1-n ). Te klucze są losowo rozrzucone w polach (jedno pole może mieć dowolną liczbę kluczy, jeden klucz może mieć dowolną liczbę duplikatów), a następnie wszystkie pola są zamykane. Skarb (numer 0 ) został również zamknięty w wielu skrzyniach.
Zatrudniłeś ślusarza, aby odzyskał cały skarb. Opłaca za każde pęknięte przez siebie pudełko. Nie ma opłaty za otwarcie skrzynki, dla której klucz jest już dostępny.
Dane wejściowe to zawartość każdego pola. Możesz zdecydować o formacie wejścia.
Wydaj minimalny koszt wymagany do zdobycia skarbów.
Notatki
- Twój algorytm może zająć dużo czasu, ale nie ma to znaczenia.
- Najkrótszy kod wygrywa.
- Nie musisz się martwić o nieprawidłowe dane wejściowe.
Przykładowe dane
Tutaj wiersz i reprezentuje klucze obecne w polu i .
Wejście
2 0
3
4 0
5 6 0
6
0
Wynik
1
Wejście
2 0
3 0
4 0
6
5 0
Wynik
3
Wejście
2 4 0
3 0
1 0
6
5 0
Wynik
2
Wejście
1
3 4
2 6
5
Wynik
0
[[1] [3 4] [] [] [2 6] [5]]
lub być może {{1},{3,4},{},{},{2,6},{5}}
. W ten sposób większość języków może ograniczyć czytanie wkładu do czegoś tak trywialnego, jak i=eval(read())
i skupić się na zabawnej części wyzwania.