만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

메트릭 행렬

면접 대비

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

요약
N x N 거리 행렬이 거리 함수의 네 조건을 만족하는지 검사합니다. 위반한 조건 중 가장 작은 번호를 출력하고, 모두 만족하면 0을 출력합니다.
난이도

쉬움10점 중 3점

유형
완전 탐색, 행렬, 구현
정답자
아직 제출이 없습니다

문제

정사각 거리 행렬이 주어진다. a[i,j]a[i,j]는 점 ii와 점 jj 사이의 거리이다. 이 거리 행렬이 메트릭인지 판별한다.

거리 행렬 a[x,y]a[x,y]가 메트릭이려면 다음 조건을 모두 만족해야 한다.

  1. f(x,x)=0f(x,x) = 0
  2. x≠yx \neq y이면 f(x,y)>0f(x,y) > 0
  3. f(x,y)=f(y,x)f(x,y) = f(y,x)
  4. f(x,y)+f(y,z)≥f(x,z)f(x,y) + f(y,z) \geq f(x,z)

입력

첫 줄에 행과 열의 수 N이 주어진다. 2≤N≤302 \leq N \leq 30이다.

이어서 N줄에 걸쳐 각 줄마다 공백으로 구분된 정수 N개가 주어진다. 각 정수는 -32000 이상 32000 이하이다. 첫 번째 줄이 첫 번째 행이고, 각 줄의 첫 번째 수가 첫 번째 열이다.

출력

한 줄에 한 자리 숫자를 출력한다. 아래 사실 중 성립하는 것들 가운데 가장 작은 숫자이다.

  • 0: 이 행렬은 메트릭이다.
  • 1: 조건 1을 위반하므로 메트릭이 아니다.
  • 2: 조건 2를 위반하므로 메트릭이 아니다.
  • 3: 조건 3을 위반하므로 메트릭이 아니다.
  • 4: 조건 4를 위반하므로 메트릭이 아니다.

예제1

  1. 예제 1

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