청군 백군
시간 제한1초메모리 제한1024 MB
각 조에서 최대 한 명을 반대 팀으로 옮겨 두 팀의 최소 친밀도 중 작은 값을 최대로 만드는 문제입니다.
문제
서울대학교 운동회에 명의 학생이 참가하여, 청군과 백군으로 나뉘어 게임을 하고자 한다. 이때 각 학생들은 친한 친구들끼리 같은 팀에 속하고 싶어 하기 때문에, 원하는 인원수의 조를 만들어 함께 운동회를 신청하였다. 명의 학생들은 각각 정확히 하나의 조에 소속되며, 각 조는 청군과 백군 중 하나를 선택해 신청하였다.
명의 학생들은 각각 서로 친한 정도가 존재한다. 편의상 학생들을 , , 으로 번호를 매기면, 모든 , 에 대해, 학생 와 학생 는 만큼 친하다. 팀원 전체가 게임에서 단합하려면 그 팀에 속한 모든 학생들이 서로 친해야 하므로, 청군과 백군 각 팀의 단합력은 그 팀에 속한 서로 다른 학생들 , 에 대한 의 최솟값으로 정의된다. 단, 팀원의 수가 또는 일 경우 그 팀의 단합력은 로 정의된다.
운동회의 진행자인 지환이는 운동회에 신청한 학생들을 각각 청군과 백군 중 하나의 팀에 배정해야 한다. 지환이는 청군과 백군 모두가 단합이 잘 되는 명경기를 만들고 싶으므로 두 팀의 단합력 중 작은 값이 최대가 되게 하려고 한다. 이때 지환이는 다수를 위한 소수의 희생이 불가피하다고 판단하였고, 신청할 때 만들었던 각 조별로 최대 명을 신청한 팀이 아닌 팀에 배정하기로 했다.
위 조건을 만족하면서 지환이의 목표가 이루어지도록 참가자들을 배정할 때, 두 팀의 단합력 중 작은 값을 구해보자!
입력
첫째 줄에 전체 학생 수 , 청군으로 신청한 조의 수 , 백군으로 신청한 조의 수 가 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에 걸쳐, 청군으로 신청한 각 조에 대해 그 조에 속한 학생 수 과 개의 학생 번호가 공백으로 구분되어 주어진다.
번째 줄부터 개의 줄에 걸쳐, 백군으로 신청한 각 조에 대해 그 조에 속한 학생 수 과 개의 학생 번호가 공백으로 구분되어 주어진다.
번째 줄부터 개의 줄에 걸쳐, 를 나타내는 행렬이 주어진다. 구체적으로 번째 줄에는 , , 이 공백으로 구분되어 주어진다. 이때 인 각 , 에 대해 임이 보장된다.
입력으로 주어지는 모든 수는 정수이다.
출력
두 팀의 단합력 중 작은 값을 나타내는 정수를 출력한다. 단, 그 값이 라면 INFINITY를 출력한다.