1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { FastScanner sc = new FastScanner(); int a = sc.nextInt(); int n = sc.nextInt(); int INF = 99999999; int[][] ar = new int[a][a]; int[][] dp = new int[a][a]; for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { if (i == j) ar[i][i] = 0; else ar[i][j] = INF; } } for(int i=0;i<n;i++){ int x = sc.nextInt(); int y = sc.nextInt(); int tmp = sc.nextInt(); if(ar[x-1][y-1] !=0 && ar[x-1][y-1] > tmp) ar[x-1][y-1] = tmp; } for(int k=0;k<a;k++){ for(int i=0;i<a;i++){ for(int j=0;j<a;j++){ if(ar[i][k]+ar[k][j]<ar[i][j]){ ar[i][j] = ar[i][k]+ar[k][j]; } } } } for(int i=0;i<a;i++){ for(int j=0;j<a;j++){ if(ar[i][j]==INF){ ar[i][j] = 0; } if(j!=a-1) System.out.print(ar[i][j]+" "); else System.out.println(ar[i][j]); } } } } class FastScanner { BufferedReader br; StringTokenizer st; public FastScanner(String s) { try { br = new BufferedReader(new FileReader(s)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } public FastScanner() { br = new BufferedReader(new InputStreamReader(System.in)); } String nextToken() { while (st == null || !st.hasMoreElements()) { try { st = new StringTokenizer(br.readLine()); } catch (IOException e) { throw new RuntimeException(e); } } return st.nextToken(); } int nextInt() { return Integer.parseInt(nextToken()); } long nextLong() { return Long.parseLong(nextToken()); } double nextDouble() { return Double.parseDouble(nextToken()); } String nextLine() { String str = ""; try { str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } return str; } } | cs |
'알고리즘' 카테고리의 다른 글
[1965번] 상자넣기 (0) | 2017.12.05 |
---|---|
[1149번] RGB거리 (0) | 2017.12.05 |
[1475번] 방 번호 (0) | 2017.12.05 |
[2869번] 달팽이는 올라가고 싶다 (0) | 2017.12.05 |
[1912번] 연속합 (0) | 2017.12.05 |