번호가 1-n 인 n 개의 상자 가 있습니다 . 각 상자는 하나의 해당 유형의 키 (번호 1-n ) 만 열 수 있도록 잠겨 있습니다 . 이러한 키는 상자에 무작위로 흩어져 있으며 (한 상자에는 여러 개의 키가있을 수 있고, 하나의 키에는 여러 개의 중복이있을 수 있음) 모든 상자가 닫힙니다. 많은 상자에 보물 ( 0 )이 잠겨 있습니다.
모든 보물을 회수하기 위해 자물쇠 제조공을 고용했습니다. 그는 금이 간 상자마다 요금을 청구합니다. 키를 이미 사용할 수있는 상자를 열면 무료입니다.
입력은 각 상자의 내용입니다. 입력 형식을 결정할 수 있습니다.
보물을 얻는 데 필요한 최소 비용을 출력하십시오.
노트
- 알고리즘 시간이 오래 걸릴 수 있지만 관련이 없습니다.
- 가장 짧은 코드가 승리합니다.
- 유효하지 않은 입력에 대해 신경 쓸 필요가 없습니다.
샘플 데이터
여기서 줄 i 는 상자 i 에있는 키를 나타냅니다 .
입력
2 0
3
4 0
5 6 0
6
0
산출
1
입력
2 0
3 0
4 0
6
5 0
산출
3
입력
2 4 0
3 0
1 0
6
5 0
산출
2
입력
1
3 4
2 6
5
산출
0
2
이것은 아마도 이것과 관련 이 있습니까?
—
Addison Crump
@VoteToClose 멋진 비디오. 일반화 된 것이 아니라 수학 퍼즐과 특정 알고리즘에 대해 이야기한다는 점을 제외하면 비슷합니다.
—
ghosts_in_the_code
이것은 퍼즐과 관련이있는 것으로 보입니다. 나무와 강철로 된 100 개의 잠긴 상자 : puzzling.stackexchange.com/q/17852/4551
—
xnor
@ghosts_in_the_code 단순성에 관한 것이 아니라 유연성에 관한 것입니다. 일반적으로 구조화 된 입력이 필요한 문제는 데이터가 전처리되지 않는 한 편리한 목록 형식을 허용합니다. 언어와 같이 공백으로 구분 된 파일을 의미
—
Martin Ender
[[1] [3 4] [] [] [2 6] [5]]
하거나 의미 하거나 어쩌면 {{1},{3,4},{},{},{2,6},{5}}
. 이런 식으로 대부분의 언어는 입력을 사소한 것으로 입력을 줄이고 i=eval(read())
도전의 재미있는 부분에 집중할 수 있습니다.