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

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

제주도 관광

시간 제한1초메모리 제한128 MB

요약
방향성 비순환 그래프에서 정점을 공유하지 않는 두 경로를 골라 두 경로에 속한 정점 수의 합을 최대로 합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 그래프, 위상 정렬
정답자
아직 제출이 없습니다

문제

제주도는 관광객이 많이 찾는 곳이다. 제주도에는 교차로 NN개와 일방통행 도로 MM개가 있다. 도로는 각각 한 교차로에서 다른 교차로로 이어지고, 같은 교차로 쌍을 잇는 도로가 여러 개일 수도 있다.

제주도의 도로는 아주 신기한 모양으로 놓여 있다. 어떤 교차로에서 출발해 도로를 따라 돌아다녀도 출발한 교차로로 다시 돌아올 수 없다. (그럼 제주도에 사는 사람은 어떻게 출퇴근을 하는 것일까?)

두 그룹이 제주도 여행을 계획하고 있다. 각 그룹은 교차로 한 곳에서 출발해 도로를 따라 이동한다. 그런데 두 그룹은 사이가 아주 나빠서 같은 교차로를 지나면 안 된다. 즉, 경로 P1P_1과 P2P_2를 정해야 하는데, PiP_i (1≤i≤21 \le i \le 2)는 교차로 sis_i에서 출발해 교차로 tit_i에서 여행을 마치고, 두 경로는 지나는 교차로를 하나도 공유하면 안 된다. 출발점과 도착점도 겹치면 안 된다. 다만 PiP_i가 교차로를 하나만 포함하는 경우는 가능하다. (si=tis_i = t_i)

두 경로에 포함된 교차로 수의 합을 최대로 하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT (1≤T≤101 \le T \le 10)가 주어진다.

각 테스트 케이스의 첫째 줄에는 교차로의 수 NN과 도로의 수 MM이 주어진다. (1≤N≤3001 \le N \le 300, 1≤M≤30001 \le M \le 3000) 교차로는 11번부터 NN번까지 번호가 매겨져 있다. 다음 MM개 줄에는 도로 하나를 나타내는 두 정수 AA와 BB가 주어진다. AA번 교차로에서 BB번 교차로로 가는 일방통행 도로라는 뜻이다.

출력

각 테스트 케이스마다 문제의 조건을 만족하는 두 경로에 포함된 교차로 수의 합의 최댓값을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    3
    3 2
    1 2
    2 3
    8 9
    1 2
    2 3
    3 4
    5 6
    6 7
    7 8
    2 6
    6 3
    3 7
    4 2
    1 2
    3 4
    
    예상 출력
    3
    8
    4