래환이의 수강신청 대작전

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

요약
N-1개 과목의 수강 학생 집합이 주어질 때, 모든 학생이 서로 다른 과목 조합을 가지면서 각자 최소 한 과목을 신청하도록 N번째 과목의 수강생 조합 가짓수를 센다.
난이도

어려움10점 중 8점

유형
조합론, 수학, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

한과영에는 NN개의 과목 S_1,S_2,⋯ ,S_NS\_1, S\_2, \cdots, S\_N이 있고, 래환이와 11번부터 MM번까지의 학번이 부여된 MM명의 학생들이 있다. 모든 학생은 최소 하나 이상의 과목을 신청해야 하며, 신청한 과목이 완전히 동일한 학생 쌍은 존재해서는 안 된다.

래환이는 과목 S_NS\_N을 신청할 경우 같이 듣게 될 학생들의 조합이 궁금해졌다. 과목 S_1,S_2,⋯ ,S_N−1S\_1, S\_2, \cdots, S\_{N-1}을 신청하는 학생들의 학번이 주어졌을 때, 과목 S_NS\_N을 신청하는 학생들의 가능한 조합의 가짓수를 구하는 프로그램을 작성하시오. 단, 래환이의 신청 여부는 고려하지 않으며, 오직 MM명의 학생들의 조합만 고려한다. 또한, 아무도 과목 S_NS\_N을 신청하지 않는 경우도 가능하다.

입력

첫 번째 줄에는 두 개의 정수 N$$(2 \le N \le 30)과 M$$(1 \le M \le 30)이 주어진다.

다음 (N−1)(N-1)개의 줄 중 ii번째 줄에는 S_iS\_i를 신청하는 학생 수와 S_iS\_i를 신청하는 학생들의 학번이 공백으로 구분되어 주어진다. 만약 S_iS\_i를 신청하는 학생이 존재하지 않는다면 해당 줄에 00 하나만 주어진다.

출력

과목 S_NS\_N을 신청하는 학생들의 가능한 조합의 가짓수를 출력한다. 만약 가능한 조합이 존재하지 않는다면 00을 출력한다.

예제1

  1. 예제 1

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