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

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

파티

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

요약
각 학생을 희망 명단에 올린 지원자 중 한 명과 짝지어 모든 학생이 한 파티에서 참석하도록 하는 최소 파티 수를 구합니다.
난이도

보통10점 중 7점

유형
그래프, 이분 탐색
정답자
아직 제출이 없습니다

문제

학과에서 파티를 연다. 파트너와 함께 참석해야 하는 학생이 mm명 있고, 파트너가 되어 줄 지원자가 ff명 있다.

지원자는 저마다 파트너가 되어 줄 의향이 있는 학생 명단을 미리 밝혀 두었다. 명단에 없는 학생과는 파트너가 되지 않는다.

한 번의 파티에서 지원자 한 명은 최대 한 학생의 파트너가 된다. 그래서 파티를 한 번만 열면 모든 학생이 파트너와 함께 참석하지 못할 수 있다. 대신 같은 지원자를 불러 파티를 여러 번 열 수 있다. 학생은 그중 어느 한 번에 파트너와 함께 참석하면 된다.

파티를 여는 비용이 크므로 횟수는 적을수록 좋다. 모든 학생이 파트너와 함께 파티에 참석하려면 파티를 최소 몇 번 열어야 하는지 구하라.

입력

첫 줄에 테스트 케이스의 개수 nn이 주어진다. (1≤n≤2001 \le n \le 200)

각 테스트 케이스의 첫 줄에는 두 정수 mm과 ff가 공백 하나로 구분되어 주어진다. mm은 파트너가 필요한 학생 수, ff는 지원자 수다. (1≤m≤1001 \le m \le 100, 1≤f≤501 \le f \le 50)

이어지는 ff개의 줄 중 ii번째 줄은 ii번 지원자를 나타낸다. 각 줄은 그 지원자가 파트너가 되어 줄 의향이 있는 학생 수를 나타내는 양의 정수로 시작하고, 그 뒤에 학생 번호가 공백으로 구분되어 주어진다. 학생 번호는 00부터 m−1m-1까지이며 한 줄 안에서 중복되지 않는다.

출력

각 테스트 케이스마다 한 줄을 출력한다. 파티를 아무리 많이 열어도 모든 학생이 파트너와 함께 참석할 수 없으면 impossible을 출력한다. 그렇지 않으면 필요한 파티 횟수의 최솟값을 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    3
    3 3
    1 0
    1 0
    2 1 2
    5 3
    5 4 3 2 1 0
    1 0
    2 0 1
    3 2
    1 0
    2 0 1
    
    예상 출력
    2
    3
    impossible
    
  2. 예제 2

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

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