만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

알고리즘 교육

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

요약
교사마다 아는 알고리즘 목록이 주어질 때, 학생들이 받는 교육 범위가 서로 포함 관계에 놓이지 않도록 팀을 꾸리는 최대 학생 수를 구합니다.
난이도

어려움10점 중 8점

유형
조합론, 비트 연산, 그래프
정답자
아직 제출이 없습니다

문제

라틴 아메리카 초보자 지역 대회가 다가오고 있으며, 바이트랜드 대학교는 신입생으로 팀을 꾸려 이 대회에 내보내려 한다. 이 대학에는 알고리즘을 가르칠 수 있는 교사가 NN명 있다. 각 지원 학생은 교사 한 명에게 교육을 받으며, 그 교사가 아는 알고리즘 중 공집합이 아닌 부분집합으로 훈련받는다. 예를 들어 교사가 PRIM과 KRUSKAL을 안다면, 그 교사는 학생을 PRIM만, KRUSKAL만, 또는 둘 다로 교육할 수 있다. 이처럼 이 교사가 학생을 교육하는 방법은 세 가지다. 일반적으로 AA개의 서로 다른 알고리즘을 아는 교사는 학생을 2A−12^A - 1가지 방법으로 교육할 수 있다. 대학에는 신입생이 많고 교사가 가르칠 수 있는 학생 수에도 제한이 없으므로, 이 2A−12^A - 1가지 선택지는 모두 실행될 수 있다.

대학은 가능한 한 많은 학생으로 팀을 구성하려 한다. 다만 최종 팀의 학생들은 모두 서로 협력할 수 있어야 한다. 즉, 학생 각자가 상대방은 배우지 않은 알고리즘을 배운 상태여야 한다. 예를 들어 BFS와 DFS를 배운 학생은 DFS와 DIJKSTRA를 배운 다른 학생과 협력할 수 있다. 첫 번째 학생은 BFS를 배웠고 두 번째 학생은 BFS를 배우지 않았기 때문이다. 반면 BFS와 DFS를 배운 학생은 BFS만 배운 학생, DFS만 배운 학생, BFS와 DFS를 모두 배운 학생 등과는 협력할 수 없다.

입력

첫 줄에 교사의 수 NN (1≤N≤1001 \le N \le 100)이 주어진다. 다음 NN개 줄 각각은 교사 한 명을 나타낸다. 각 줄에는 교사가 아는 알고리즘의 수 AA (1≤A≤101 \le A \le 10)가 먼저 주어지고, 이어서 서로 다른 공집합이 아닌 알고리즘 이름 AA개가 주어진다. 각 이름은 최대 10개의 대문자 알파벳으로 이루어진다.

출력

팀의 모든 학생이 서로 협력할 수 있도록 구성했을 때, 팀에 포함할 수 있는 학생 수의 최댓값을 정수 한 줄로 출력한다.

예제5

  1. 예제 1

    입력
    1
    3 DFS BFS DIJKSTRA
    
    예상 출력
    3
    
  2. 예제 2

    입력
    2
    4 BFS DFS LCA RMQ
    2 PRIM KRUSKAL
    
    예상 출력
    8
    
  3. 예제 3

    입력
    4
    3 BFS DFS DIJKSTRA
    4 BFS DFS LCA RMQ
    3 DIJKSTRA BFS DFS
    3 FLOYD DFS BFS
    
    예상 출력
    10
    
  4. 예제 4

    입력
    1
    1 HAVEFUN
    
    예상 출력
    1
    
  5. 예제 5

    입력
    3
    4 FFEK DANTZIG DEMOUCRON FFT
    4 PRIM KRUSKAL LCA FLOYD
    4 DFS BFS DIJKSTRA RMQ
    
    예상 출력
    18