N개 대학에 대한 M개 순위가 주어질 때, 앞선 대학이 모든 순위에서 다음 대학보다 앞서는 최장 수열의 길이를 구한다.
보통6동적 계획법정렬누적 합아직 제출이 없습니다시간 제한8초메모리 제한512 MB한 평가 기관이 학과마다 순위표를 하나씩 발표한다. 조사 대상 대학은 모두 같은 M개 학과를 두고 있고, 각 학과 순위표는 N개 대학을 1등부터 꼴찌까지 빠짐없이 줄 세운다.
순위표가 여러 개라서 두 대학의 우열을 가리지 못하는 경우가 자주 생긴다. 그래서 이 기관은 절대 우위라는 관계를 쓴다. 대학 X가 M개 순위표 전부에서 대학 Y보다 앞에 있으면 X는 Y보다 절대 우위에 있다고 한다.
대학 X, Y, Z 세 곳과 CS, EE, FLS 세 학과가 있고 순위표가 다음과 같다고 하자.
X는 세 순위표 모두에서 Y보다 앞에 있으므로 Y보다 절대 우위에 있다. 반면 X와 Z는 우열을 가릴 수 없다. CS에서는 X가 앞서고 FLS에서는 Z가 앞선다.
모든 i<j에 대해 Ui가 Uj보다 절대 우위에 있는 대학 U1,…,Uk를 찾으려고 한다. 가능한 k의 최댓값을 구하여라. 대학은 번호로 주어진다.
첫째 줄에 테스트 케이스의 수 C가 주어진다 (1≤C≤10).
각 테스트 케이스의 첫째 줄에는 대학 수 N과 학과 수 M이 주어진다 (1≤N,M≤400). 이어서 M개 줄이 주어진다. 그중 k번째 줄에는 k번째 학과의 순위가 1등부터 차례로 N개의 정수로 주어지며, 이 N개의 수는 1부터 N까지의 순열이다. 대학 U가 같은 줄에서 대학 V보다 앞에 나오면 k번째 학과는 U가 V보다 낫다.
각 테스트 케이스마다 한 줄에 k의 최댓값을 입력 순서대로 출력한다. 출력은 모두 C줄이고, 불필요한 공백은 출력하지 않는다.