록 밴드

시간 제한4초메모리 제한512 MB

요약
M명의 멤버가 S곡 전체에 순위를 매긴다. 어떤 곡을 연주하면 그 곡보다 선호하는 곡도 모두 연주해야 한다는 조건을 만족하는 가장 짧은 셋리스트를 찾는다.
난이도

어려움10점 중 8점

유형
그리디, 정렬, 해시맵, 구현
정답자
아직 제출이 없습니다

문제

방과 후마다 너와 친구들은 모여 밴드 연습을 한다. 지난 몇 달 동안 밴드는 아주 많은 곡을 연습했고, 이제 처음으로 관객 앞에서 공연할 때가 됐다. 공연을 하려면 먼저 세트 리스트를 정해야 한다.

밴드 멤버는 저마다 음악 취향이 다르고, 다들 까다롭다. 어떤 멤버가 곡 XX를 연주하려면 그 멤버가 XX보다 더 좋아하는 곡을 모두 함께 연주해야 한다. 이 조건은 모든 멤버와 모든 곡 XX에 대해 성립해야 한다. 또한 적어도 한 곡은 연주해야 한다.

주최 측은 곡이 너무 많아지는 것을 원하지 않는다. 그래서 조건을 만족하는 세트 리스트 중에서 길이가 가장 짧은 것을 골라야 한다. 밴드의 비공식 리더인 너가 그런 세트 리스트를 찾는다.

입력

첫째 줄에 두 정수 MM과 SS가 주어진다. M≥1M \ge 1, S≥1S \ge 1이고 M×S≤106M \times S \le 10^6이다. MM은 밴드 멤버 수, SS는 곡 수다.

다음 MM개 줄에는 각각 SS개의 정수가 주어진다. ii번째 줄은 ii번째 멤버의 선호 목록이고, 가장 좋아하는 곡부터 가장 덜 좋아하는 곡까지 순서대로 나열된다. 곡 번호는 11부터 SS까지이므로 각 줄은 11부터 SS까지의 순열이다.

선호 목록이 완전히 같은 두 멤버는 없다.

출력

가장 짧은 세트 리스트를 다음 형식으로 출력한다.

  • 첫째 줄에 가장 짧은 세트 리스트의 길이 LL을 출력한다.
  • 둘째 줄에 연주할 곡 번호 LL개를 오름차순으로 정렬해 공백 하나로 구분해 출력한다.

예제3

  1. 예제 1

    입력
    3 8
    4 5 2 1 6 8 3 7
    5 2 4 8 6 1 3 7
    2 5 4 8 1 6 3 7
    
    예상 출력
    3
    2 4 5
    
  2. 예제 2

    입력
    2 8
    6 2 8 7 1 3 4 5
    2 8 7 1 3 4 5 6
    
    예상 출력
    8
    1 2 3 4 5 6 7 8
    
  3. 예제 3

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