아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

쿠키런 킹덤

시간 제한1초메모리 제한512 MB

요약
각 건물이 생산하는 자원과 미건설 건물이 요구하는 자원이 주어질 때, 이미 지어진 M개에서 시작해 T초 안에 지을 수 있는 건물의 수와 번호를 구한다.
난이도

보통10점 중 6점

유형
그래프, BFS, 해시맵, 시뮬레이션
정답자
아직 제출이 없습니다

문제

내 친구 용감한 쿠키가 고민에 빠졌다고 한다. 용감한 쿠키는 요즘 쿠키런 킹덤이라는 게임을 하는데, 이 게임에서는 1,2,⋯ ,N1, 2, \cdots, N의 번호로 구분되는 NN가지 종류의 자원 중 일부를 이용하여 건물을 짓는다. 자원은 이미 지어진 건물을 통하여 비용을 들이지 않고 무제한으로 만들 수 있으며, 각 자원을 만들 수 있는 건물은 정해져 있다. 자원을 만드는 데에는 00초가 걸리고, 건물을 짓는 데에는 11초가 걸리며, 동시에 여러 개의 자원을 만들거나 건물을 지을 수 있다. 그리고 각 건물로부터 필요한 자원과 생산할 수 있는 자원의 최대 가짓수는 NN과 3030 중 작은 값(= min(N,30)\text{min}(N, 30)) 이다.

용감한 쿠키는 현재 지어진 건물로 정해진 시간 안에 건설할 수 있는 건물이 무엇이 있는지 궁금하다며 빨리 알고 싶다고 한다. 하지만 용감한 쿠키는 너무 바빠서 구할 수가 없다고 한다. 내 친구인 용감한 쿠키를 얼른 도와주자. 단, 이미 지어진 건물도 정해진 시간 안에 건설할 수 있는 건물로 간주한다.

입력

첫 번째 줄에 자원의 가짓수 NN과 이미 지어진 건물의 개수 MM, 제한 시간 TT가 주어진다. 건물의 가짓수는 자원의 가짓수와 같은 NN이다. 건물과 자원 모두 11부터 NN까지의 번호가 붙는다.

  • 1≤N≤100,0001 \leq N \leq 100,000
  • 1≤M≤N1 \leq M \leq N
  • 0≤T≤N0 \leq T \leq N

두 번째 줄에는 서로 다른 MM개의 번호가 주어지며, 이는 이미 지어진 건물의 번호이다.

이후 NN개의 줄에 건물마다 생산할 수 있는 자원의 가짓수와 그 자원 번호가 공백으로 나뉘어서 주어진다.

그 이후 N−MN - M개의 줄에는 아직 지어지지 않은 건물의 번호와 건물마다 필요로 하는 자원의 가짓수, 그 자원의 번호가 공백으로 나뉘어서 주어진다.

이때, 각 건물에서 생산되는 자원과 건물을 지을 때 필요한 자원의 가짓수는 11 이상이다.

각 건물로부터 필요한 자원과 생산할 수 있는 자원의 최대 가짓수는 NN과 3030을 넘지 않는다. 즉, min(N,30)\text{min}(N, 30) 이하이다.

출력

첫 번째 줄에는 TT초 내에 지을 수 있는 건물의 개수를 출력하고, 두 번째 줄에는 제한 시간 내에 지을 수 있는 모든 건물의 번호를 공백으로 구분하여 오름차순으로 출력한다.

예제1

  1. 예제 1

    입력
    6 2 2
    1 3
    1 1
    1 2
    1 3
    1 4
    1 5
    1 6
    2 2 1 3
    4 3 2 3 5
    5 3 1 2 6
    6 2 4 5
    
    예상 출력
    3
    1 2 3