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

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

보통6그래프정렬투 포인터유니온 파인드아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

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

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

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

입력

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

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

출력

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