static void warshallFloyd(int[][] E) {
        
        int[][] dp = new int[V][V];
        
        for (int i = 0; i < V; i++) {
            // 適度に大きい値を設定する。オーバーフローにを付ける必要がある。
            Arrays.fill(dp[i], Integer.MAX_VALUE / 100);
            dp[i][i] = 0;
        } 
        
        // 各辺のコストをDPに当てはめる。
        for (int[] is : E) {
            dp[is[0]][is[1]] = is[2];
            dp[is[1]][is[0]] = is[2];
        }

        for (int k = 0; k < V; k++) {
            for (int i = 0; i < V; i++) {
                for (int j = 0; j < V; j++) {
                    dp[i][j] = Math.min(dp[i][j], dp[i][k] + dp[k][j]);
                }
            }
        }
        
        System.out.println();
        for (int i = 0; i < V; i++) {
            for (int j = 0; j < V; j++) {
                System.out.print(dp[i][j] + " ");
            }
            System.out.println();
        }
        
    }