각 질의마다, 모든 선호 구역으로 가는 모든 경로에 재고 구역이 정확히 하나씩 놓이도록 하는 크기 k인 구역 집합의 수를 센다.
어려움8트리동적 계획법DFS조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB당신은 미국에서 이름난 스키 리조트의 주인이다. 리조트 곳곳의 스낵 가판대에 알맞은 간식을 채워 넣어 매출을 올리려 한다.
스키 리조트는 산 위에 있다. 손님은 스키 리프트를 타고 산꼭대기에 올라간 뒤, 그곳에서 스키를 타고 산의 여러 지점으로 내려간다.
산에는 n개의 구역이 있고, 각 구역에는 1부터 n까지 번호가 붙어 있다. 산꼭대기는 1번 구역이다. 구역들은 스키 코스로 연결되어 있으며, 모든 스키 코스는 엄격하게 내리막이다. 즉 한 구역을 떠나면 스키 리프트를 타지 않고는 그 구역으로 다시 돌아올 수 없다. 모든 구역(1번 구역 포함)에는 스낵 가판대가 정확히 하나씩 있다.
리조트 주인으로서 당신은 손님을 더 잘 대접하기 위해(그리고 돈을 더 벌기 위해) 가판대에 간식을 얼마나 효과적으로 배치할 수 있는지 알고 싶다. 그래서 설문 조사를 하고, 그 결과를 서로 독립적인 여러 질의로 분석하려 한다. 설문에 참여한 손님마다 가장 좋아하는 간식이 하나 있고, 즐겨 찾는 구역의 목록이 있다. 당신은 각 손님이 좋아하는 간식을 가판대에 어떻게 채우는 것이 가장 좋은지 알고 싶다.
각 질의는 한 손님이 즐겨 찾는 구역들의 집합과 수 k로 이루어진다. 이 손님이 좋아하는 간식을 산 위의 가판대 정확히 k곳에 채우는 방법 가운데 다음 조건을 모두 만족하는 방법의 수를 구하라.
입력은 테스트 케이스 하나로 이루어진다. 프로그램은 서로 다른 입력으로 여러 번 실행될 수 있다.
첫째 줄에 세 정수 n, m, q가 공백으로 구분되어 주어진다. n(1≤n≤105)은 산에 있는 구역의 수, m(1≤m≤n+50)은 스키 코스의 수, q(1≤q≤105)는 질의의 수이다.
다음 m개의 줄에는 각각 두 정수 x와 y(1≤x,y≤n, x=y)가 주어진다. 이는 x번 구역에서 y번 구역으로 내려가는 스키 코스를 뜻한다. 두 구역 사이에는 스키 코스가 많아야 하나 있다. 모든 구역은 1번 구역에서 스키 코스를 몇 개 이어 타서 도달할 수 있다.
다음 q개의 줄에는 각각 공백으로 구분된 정수들이 주어진다. 각 줄은 k와 a로 시작하고, 그 뒤에 정수 i가 a개 이어진다. k(1≤k≤4)는 이 손님이 좋아하는 간식을 채울 가판대의 수, a(1≤a≤n)는 질의 집합에 속한 구역의 수이고, a개의 정수 i(1≤i≤n)는 질의 집합에 속한 구역의 번호이다. 한 질의 안에서 같은 i가 두 번 나오지 않는다.
모든 질의의 a의 합은 100000을 넘지 않는다.
정수 q개를 한 줄에 하나씩, 빈 줄 없이 출력한다. 각 정수는 해당 질의에서 간식을 채울 가판대를 고르는 방법의 수이며, 질의가 입력에 주어진 순서대로 출력한다. 어떤 구역이 한 방법에서는 선택되고 다른 방법에서는 선택되지 않으면 두 방법은 서로 다르다.