만드는 중입니다

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

비행 요금 효율 최대화

면접 대비

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

요약
항공 요금표에서 직항이 경유 노선보다 비싼 경우가 있는지 확인하고, 없다면 모든 여행 비용을 유지한 채 제거할 수 있는 직항의 수를 구합니다.
난이도

보통10점 중 5점

유형
최단 경로, 행렬, 그래프
정답자
아직 제출이 없습니다

문제

쿼드라도니아 왕국의 왕은 항공편 요금을 점검하려 한다. 이를 위해 그는 회계 담당자에게 새 요금안을 정리한 표를 요청했다.

하지만 왕은 Chapec´o 컴퓨팅 및 프로그래밍 연구소(ICPC)에서 공부한 사람이라, 표에 일관성을 요구할 만큼 지식이 충분하다. 어떤 다구간 경로도 직항보다 싸지 않으면 그 표는 일관적이다.

표가 일관적인지 확인한 뒤, 왕은 어떤 여행의 비용도 늘리지 않으면서 직항 편수를 줄이고 싶어 한다.

이 문제의 목표는 표가 일관적인지 확인하는 것이다. 일관적이라면, 어떤 여행의 비용도 늘리지 않고 없앨 수 있는 직항의 최대 개수를 구한다.

입력

첫 줄에 항공편이 연결된 도시의 수 NN (1≤N≤1001 \le N \le 100)이 주어진다. 이어서 NN개의 줄 L1,L2,…,LNL_1, L_2, \ldots, L_N이 주어지며, 줄 LiL_i에는 NN개의 정수 Ci1,Ci2,…,CiNC_{i1}, C_{i2}, \ldots, C_{iN}이 있다. CijC_{ij}는 도시 ii와 jj 사이 직항의 비용이다.

두 도시 사이 왕복 요금은 항상 같으므로, 모든 1≤i,j≤N1 \le i, j \le N에 대해 Cij=CjiC_{ij} = C_{ji}이다. i=ji = j이면 Cij=0C_{ij} = 0이고, i≠ji \ne j이면 1≤Cij≤1031 \le C_{ij} \le 10^3이다.

출력

표가 일관적이지 않으면 −1-1을 출력한다. 일관적이면 어떤 승객의 여행 비용도 늘리지 않고 제거할 수 있는 직항의 최대 개수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    3
    0 1 2
    1 0 1
    2 1 0
    
    예상 출력
    1
    
  2. 예제 2

    입력
    3
    0 2 2
    2 0 2
    2 2 0
    
    예상 출력
    0
    
  3. 예제 3

    입력
    3
    0 2 9
    2 0 2
    9 2 0
    
    예상 출력
    -1