삐까냥의 파도타기

1507번) 궁금한 민호 본문

코딩/백준 알고리즘

1507번) 궁금한 민호

금손형아 2017. 10. 28. 16:35

문제 출처 : https://www.acmicpc.net/problem/1507




import java.util.Scanner;


public class Q1507 {


public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int num = sc.nextInt();

int[][] map = new int[num][num];

int[][] newMap = new int[num][num];

for ( int i = 0; i < num; i++ ) {

for ( int j = 0; j < num; j++) {

map[i][j] = newMap[i][j] = sc.nextInt();

}

}


for ( int i = 0; i < num; i++ ) {

for ( int j = 0; j < num; j++ ) {

for ( int k = 0; k < num; k++ ) {

if ( i != j && j != k ){

if ( map[i][k] == map[i][j] + map[j][k] ) {

newMap[i][k] = 0;

} else if ( map[k][j] > map[k][i] + map[i][j] ) { //현재가 최소값인데, 더 최소값이 나오면 에러

System.out.println("-1");

return;

}

}

}

}

}

int result = 0;

for ( int i = 0; i < num; i++ ) {

for ( int j = i+1; j < num; j++ ) {

if ( newMap[i][j] != 0) {

result += newMap[i][j];

}

}

}

System.out.println(result);

}

}


'코딩 > 백준 알고리즘' 카테고리의 다른 글

14890번) 경사로  (0) 2017.10.29
14889번) 스타트와 링크  (0) 2017.10.28
5567번) 결혼식 - 그래프  (0) 2017.10.28
1068번) 트리 - 그래프  (0) 2017.10.28
4963번) 섬의 개수 - 그래프  (0) 2017.10.28