최대 10명 중 모든 문제를 풀 수 있는 가장 적은 인원을 고르고, 불가능하면 -1을 출력합니다.
쉬움3완전 탐색비트 연산면접 대비아직 제출이 없습니다시간 제한2초메모리 제한256 MB2015년 11월 28일은 기다리고 기다리던 제1회 IUPC가 열리는 날이다. IUPC는 Inha University Programming Contest의 약자로, 인하대학교 IT공대 학부생이면 누구나 참가할 수 있는 프로그래밍 경시대회다. 총상금은 110억 원이고, 점심과 다과가 나오며, 수많은 팀에게 추첨으로 문화상품권을 나눠준다.
이 대회가 다른 대회와 다른 점은 두 가지다. 문제가 아주 많고, 팀원 수에 제한이 없다.
컴퓨터정보공학과에 재학 중인 강호는 이 대회에 나갈 팀원을 모으려고 한다. 강호는 모든 문제를 다 풀어 우승하고 싶다. 다만 팀원이 많아질수록 자기에게 돌아오는 상금이 줄어들기 때문에, 가능한 한 적은 인원으로 우승하려고 한다.
강호가 팀원으로 고를 수 있는 학생의 목록과 각 학생이 풀 수 있는 문제의 번호가 주어진다. 대회에 나오는 문제를 모두 풀 수 있는 팀 중에서 인원이 가장 적은 팀을 만들어 보자.
첫째 줄에 문제의 수 N과 강호가 팀원으로 고를 수 있는 학생의 수 M이 공백을 사이에 두고 차례대로 주어진다. N과 M은 1 이상 10 이하의 자연수다.
둘째 줄부터 M개의 줄에 학생 정보가 차례대로 주어진다. 그중 i번째 줄에는 i번 학생이 풀 수 있는 문제의 개수 Oi가 먼저 나오고, 이어서 그 학생이 풀 수 있는 문제의 번호 Pi1,Pi2,…,PiOi가 공백을 사이에 두고 주어진다. 여기서 1≤i≤M, 1≤j≤Oi, 1≤Pij≤N이다.
모든 문제를 풀 수 있으면서 인원이 가장 적은 팀을 찾아, 그 팀의 인원수를 출력한다. 모든 문제를 풀 수 있는 팀을 만들 수 없다면 -1을 출력한다.
첫 번째 예제에서 3번 학생과 4번 학생을 뽑으면 1번부터 5번까지 모든 문제를 푸는 팀이 된다. 1번, 2번, 4번 학생을 뽑아도 모든 문제를 풀 수 있지만, 인원이 3명이라 답이 될 수 없다.