만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

과제 제출하기

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

요약
지식 조각 N개마다 잊히는 기간이 정해져 있고, 문제 M개마다 필요한 지식이 주어집니다. 문제를 어떤 순서로 풀어도 되니 모든 문제를 풀기 위한 최소 학습 횟수를 구합니다.
난이도

보통10점 중 5점

유형
완전 탐색, 그리디, 시뮬레이션
정답자
아직 제출이 없습니다

문제

성현이가 배우는 과목에는 NN개의 지식이 포함된다. 지식은 1부터 NN까지의 정수로 나타낸다.

성현이는 MM개의 문제를 모두 풀어서 제출해야 한다. 한 문제를 푸는 데는 하루가 걸리고, 문제를 푸는 순서는 성현이가 정할 수 있다. 따라서 성현이는 1일, 2일, ⋯\cdots, MM일에 문제를 하나씩 푼다.

각 문제를 풀려면 그 문제가 요구하는 지식이 필요하다. ii번째 문제를 해결하려면 ai,1a_{i,1}번, ai,2a_{i,2}번, ⋯\cdots, ai,kia_{i,k_i}번 지식, 총 kik_i개의 지식이 필요하다.

지식은 배운 뒤 일정 기간이 지나면 잊어버린다. nn번 지식을 xx일에 공부하면, (x+dn)(x+d_n)일에 성현이는 nn번 지식을 잊은 상태가 된다. 그러면 (x+dn)(x+d_n)일에 성현이는 그 지식을 다시 공부해야 할 수도 있다. 성현이는 하루에 여러 개의 지식을 동시에 배울 수도 있다.

성현이는 지식을 최소 횟수로 공부하고 MM개의 문제를 모두 해결하고 싶다. 모든 문제를 해결하기 위해 지식을 공부해야 하는 최소 횟수를 구해 보자.

입력

첫 줄에 지식의 개수 NN과 풀어야 하는 문제의 수 MM이 공백으로 구분되어 주어진다.

둘째 줄에는 각 지식을 잊게 되는 시간 d1d_1, d2d_2, ⋯\cdots, dNd_N이 공백으로 구분되어 주어진다.

이어서 MM줄에 걸쳐 kik_i가 주어지고, 뒤이어 kik_i개의 정수 ai,1a_{i,1}, ai,2a_{i,2}, ⋯\cdots, ai,kia_{i,k_i}가 공백으로 구분되어 주어진다. ai,ja_{i,j}는 ii번째 문제를 해결하는 데 필요한 지식의 번호이다.

출력

성현이가 지식을 공부해야 하는 최소 횟수를 출력한다.

제한

  • 1≤N≤1 0001 \leq N \leq 1\,000
  • 1≤M≤71 \leq M \leq 7
  • 1≤di≤M1 \leq d_i \leq M
  • did_i는 모두 정수이다.
  • 1≤ki≤N1 \leq k_i \leq N
  • 1≤ai,j≤N1 \leq a_{i,j} \leq N
  • 모든 1≤i≤M1 \leq i \leq M에 대해 ai,j<ai,j+1a_{i,j} < a_{i,j+1}이다. (1≤j≤ki−1)(1 \leq j \leq k_i-1)

예제2

  1. 예제 1

    입력
    3 3
    3 1 2
    2 1 3
    2 2 3
    1 1
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3 3
    2 2 2
    2 1 2
    1 3
    2 1 2
    
    예상 출력
    3