아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

복수전공

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

요약
두 학과로 나뉜 과목들과 학과 사이의 중복 관계가 주어질 때, 서로 겹치지 않는 과목을 최대로 고르는 개수를 구한다.
난이도

보통10점 중 6점

유형
그래프, 유니온 파인드, 이분 탐색, 그리디
정답자
아직 제출이 없습니다

문제

영준이는 소프트웨어 학부 학생이다. 컴퓨터 학부에 듣고 싶은 강의가 많아 복수전공을 시작했다.

두 학부의 커리큘럼은 대부분 비슷해서 강의 내용이 겹치는 경우가 생긴다. 한쪽 학부의 강의 하나가 다른 학부의 강의 여러 개와 내용이 겹치기도 한다.

영준이는 내용이 겹치는 두 강의를 함께 듣지 않으면서 최대한 많은 강의를 듣고 싶다. 강의 목록과 내용이 겹치는 관계가 주어질 때, 영준이가 들을 수 있는 강의 개수의 최댓값을 구하라.

입력

첫 줄에 강의의 개수 nn (1≤n≤2 0001 \le n \le 2\,000)과 내용이 겹치는 관계의 개수 mm (1≤m≤1 000 0001 \le m \le 1\,000\,000)이 주어진다.

다음 nn 줄에는 강의 번호와 그 강의가 속한 학부가 주어진다. 강의 번호는 11부터 nn까지이고 각 번호가 정확히 한 번씩 나온다. 컴퓨터 학부 강의는 c, 소프트웨어 학부 강의는 s로 표시한다.

다음 mm 줄에는 내용이 겹치는 두 강의의 번호가 주어진다. 두 강의는 서로 다른 학부에 속하고, 같은 두 강의의 관계가 두 번 이상 나오지 않는다.

출력

영준이가 들을 수 있는 강의 개수의 최댓값을 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5 4
    1 c
    2 s
    3 c
    4 s
    5 c
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    3