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

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

강한 연결을 만드는 가중치 차이 최소화

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

요약
완전 방향 그래프에서 강한 연결을 유지하는 부분 그래프를 골라, 선택한 간선의 최대 가중치와 최소 가중치 차이를 최소로 만든다.
난이도

보통10점 중 6점

유형
그래프, 정렬, 투 포인터, 유니온 파인드
정답자
아직 제출이 없습니다

문제

0번부터 N−1N-1번까지 번호가 붙은 정점 NN개로 이루어진 방향 가중치 그래프가 있다. 서로 다른 두 정점 xx, yy의 순서쌍마다 xx에서 yy로 가는 간선이 하나씩 있으므로 간선은 모두 N×(N−1)N \times (N-1)개다.

이 간선 중 일부를 골라 새 그래프를 만든다. 고른 간선만 사용해서 임의의 정점 uu에서 임의의 정점 vv로 가는 경로가 항상 존재해야 한다. 예를 들어 N=3N=3이면 0⇒10 \Rightarrow 1, 1⇒01 \Rightarrow 0, 0⇒20 \Rightarrow 2, 2⇒02 \Rightarrow 0을 고를 수 있고, 0⇒10 \Rightarrow 1, 1⇒21 \Rightarrow 2, 2⇒02 \Rightarrow 0을 고를 수도 있다.

고른 간선의 가중치 중 최댓값과 최솟값의 차이를 가장 작게 만들고 싶다. 가능한 모든 선택에서 그 차이의 최솟값을 구하시오. N=1N=1이면 고를 간선이 없으므로 답은 0이다.

입력

첫째 줄에 NN이 주어진다. NN은 50 이하의 자연수다.

둘째 줄부터 NN개의 줄에 가중치 행렬이 주어진다. 위에서 x+1x+1번째 줄의 왼쪽에서 y+1y+1번째 값은 정점 xx에서 정점 yy로 가는 간선의 가중치다. 가중치는 0 이상 150,000 이하의 정수다. 정점 xx에서 정점 xx로 가는 자기 간선의 값은 항상 0으로 주어지며, 자기 간선은 고를 수 없다.

출력

가중치 최댓값과 최솟값 차이의 최솟값을 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    4
    0 11 13 13
    10 0 12 13
    10 10 0 11
    12 10 10 0
    
    예상 출력
    1
    
  2. 예제 2

    입력
    3
    0 1 2
    3 0 4
    5 6 0
    
    예상 출력
    4