시간 제한
메모리 제한
시간 제한
3초
메모리 제한
32 MB
원형 호수에서 매년 요트 경주가 열린다. 호숫가를 따라 반시계 방향으로 1번부터 N번까지 번호가 매겨진 N개의 항구가 있다.
경주 경로는 서로 다른 항구들을 차례로 방문하는 경로이며, 같은 항구를 두 번 방문할 수 없다. 경로에서 연속한 두 항구를 잇는 각 구간을 스테이지라고 하며, 두 항구를 잇는 직선(현)을 따라 항해한다. 따라서 스테이지의 개수는 방문한 항구의 수보다 1 적다.
요트가 임의의 두 항구 사이를 항상 곧장 항해할 수 있는 것은 아니다. 각 항구 A에 대해, A에서 직선으로 곧장 갈 수 있는 항구들의 목록이 주어진다.
모든 스테이지는 직선(현)이므로 두 스테이지가 기하학적으로 서로 교차할 수 있다. 충돌을 피하기 위해, 원칙적으로 모든 스테이지는 서로 교차하지 않아야 한다. (두 스테이지가 한 항구를 공통 끝점으로 공유하기만 하는 경우는 교차로 보지 않는다.)
올해는 새로운 기술 덕분에 교차를 최대 한 번 허용할 수 있는데, 단 그 교차가 맨 첫 번째 스테이지와 얽혀 있을 때에만 가능하다. 구체적으로, 경로가 항구 S에서 출발하고 첫 스테이지가 항구 T로 향한다면, 다른 스테이지 중 최대 하나만 선분 S–T와 교차할 수 있고, 그 밖의 어떤 두 스테이지도 서로 교차해서는 안 된다. 주최 측은 이 '한 번 교차' 허용을 사용할 수도 있고, 아무 교차도 없는 고전적인 방식을 유지할 수도 있다.
요구된 형태의 경로 중에서 스테이지 수가 가장 많은 경로를 구하라.
첫째 줄에 두 정수 N과 k가 주어진다 (1 ≤ N ≤ 500). N은 항구의 수이다. k는 요구되는 형태를 지정한다. k = 0이면 경로는 고전적인 형태(교차가 전혀 없음)여야 하고, k = 1이면 위에서 설명한 대로 첫 스테이지와 얽힌 교차를 최대 한 번 포함할 수 있다.
다음 N개의 줄에는 각 항구에서 직접 갈 수 있는 목적지가 주어진다. i + 1번째 줄에는 항구 i에서 직선으로 갈 수 있는 항구들이 공백으로 구분되어 나열되며, 마지막에 하나의 0으로 끝난다 (목적지가 없을 수도 있다).
두 줄을 출력한다.
첫째 줄에는 요구된 형태의 경로가 가질 수 있는 스테이지의 최대 개수 M을 출력한다.
둘째 줄에는 M개의 스테이지를 달성하는 모든 경로 중에서 출발 항구 번호가 가장 작은 값을 출력한다. 스테이지를 하나도 만들 수 없어 M = 0인 경우에는 1을 출력한다.
예제에 대한 최적 경로 하나를 나타낸 그림이다.
