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

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

임계 3-경로

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

요약
가중 DAG에서 각 출발점에서 목표점까지 서로 겹치지 않는 세 경로의 무게 합이 가장 크도록 구합니다.
난이도

어려움10점 중 8점

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

문제

PERT(Program Evaluation and Review Technique) 차트는 프로젝트 관리에서 프로젝트를 완료하는 데 필요한 작업들을 표현하는 그래프 도구입니다. 이 차트는 방향 비순환 그래프이며, 각 간선은 하나의 작업을, 간선의 가중치는 그 작업을 수행하는 데 걸리는 시간을 나타냅니다. 간선 (u,v)(u, v)가 정점 vv로 들어오고 간선 (v,w)(v, w)가 vv에서 나간다면, 작업 (u,v)(u, v)를 작업 (v,w)(v, w)보다 먼저 끝내야 합니다. 따라서 차트의 한 경로는 정해진 순서대로 수행해야 하는 작업들의 나열입니다. 이 차트에는 사이클이 없습니다.

임계 경로(critical path)는 차트에서 가장 긴 경로이며, 그 가중치는 모든 작업을 끝내는 데 필요한 전체 시간의 하한입니다.

서로 다른 여섯 개의 정점 s1,s2,s3,t1,t2,t3s_1, s_2, s_3, t_1, t_2, t_3에 대해 3-경로를 다음과 같이 정의합니다.

  1. 3-경로는 세 개의 경로 PiP_i로 이루어지며, 각 PiP_i는 sis_i에서 tit_i로 가는 경로입니다(i=1,2,3i = 1, 2, 3).
  2. 세 경로 P1,P2,P3P_1, P_2, P_3는 정점을 공유하지 않습니다. 즉 어떤 정점도 둘 이상의 경로에 속하지 않습니다.

3-경로의 길이는 P1P_1, P2P_2, P3P_3의 길이(간선 가중치의 합)를 모두 더한 값입니다. 임계 3-경로는 가능한 모든 3-경로 중에서 길이가 최대인 3-경로입니다.

예를 들어 아래 첫 번째 예제의 그래프에서 s=(3,4,5)s = (3, 4, 5), t=(15,16,17)t = (15, 16, 17)이라 하면, 하나의 임계 3-경로는 다음과 같습니다.

  • P1P_1: 3→6→11→153 \to 6 \to 11 \to 15
  • P2P_2: 4→7→9→12→164 \to 7 \to 9 \to 12 \to 16
  • P3P_3: 5→8→13→175 \to 8 \to 13 \to 17

이때 길이는 128128입니다.

PERT 차트와 여섯 개의 정점이 주어질 때, 임계 3-경로의 길이를 구하는 프로그램을 작성하세요.

입력

첫 줄에 테스트 케이스의 수 TT가 주어집니다. 각 테스트 케이스의 첫 줄에는 두 정수 nn과 mm이 주어지며(6≤n≤1006 \le n \le 100, n−1≤m≤n(n−1)/2n - 1 \le m \le n(n-1)/2), nn은 정점의 수, mm은 간선의 수입니다. 정점은 11부터 nn까지 번호가 매겨집니다. 다음 줄에는 서로 다른 여섯 정수 s1,s2,s3,t1,t2,t3s_1, s_2, s_3, t_1, t_2, t_3가 주어집니다. 이어지는 mm개의 줄에는 각각 세 정수 uu, vv, WW가 주어지며(1≤W≤100,0001 \le W \le 100{,}000), 이는 정점 uu에서 vv로 가는 가중치 WW의 방향 간선을 뜻합니다. 모든 간선에 대해 u<vu < v라고 가정해도 됩니다.

출력

각 테스트 케이스마다 한 줄에, P1P_1(s1s_1에서 t1t_1), P2P_2(s2s_2에서 t2t_2), P3P_3(s3s_3에서 t3t_3)으로 이루어진 임계 3-경로의 길이를 출력합니다. 그러한 3-경로가 존재하지 않으면 00을 출력합니다.

예제3

  1. 예제 1

    입력
    2
    18 27
    3 4 5 15 16 17
    1 3 2
    1 4 4
    2 4 2
    2 5 3
    3 6 3
    3 9 10
    4 7 3
    4 10 2
    5 8 4
    6 11 4
    6 9 9
    7 9 4
    7 10 7
    8 13 6
    8 14 2
    9 11 3
    9 12 1
    9 13 3
    10 13 10
    11 15 1
    12 15 3
    12 16 2
    13 16 15
    13 17 100
    14 17 4
    15 18 5
    16 18 4
    6 5
    1 2 3 4 5 6
    1 2 1
    2 3 1
    3 4 1
    4 5 1
    5 6 1
    
    예상 출력
    128
    0
    
  2. 예제 2

    입력
    1
    6 5
    1 2 3 4 5 6
    1 4 10
    2 5 20
    3 6 30
    1 2 1
    1 3 1
    
    예상 출력
    60
    
  3. 예제 3

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