fork download
  1. import java.util.*
  2.  
  3. fun main() {
  4. val sc = Scanner(System.`in`)
  5. if (!sc.hasNextInt()) return
  6. val N = sc.nextInt()
  7. val M = sc.nextInt()
  8.  
  9. val pathCount = M
  10. val path = IntArray(pathCount)
  11. for (i in 0 until pathCount) {
  12. path[i] = sc.nextInt() - 1
  13. }
  14.  
  15. val danger = Array(N) { IntArray(N) }
  16. for (i in 0 until N) {
  17. for (j in 0 until N) {
  18. danger[i][j] = sc.nextInt()
  19. }
  20. }
  21.  
  22. // Floyd-Warshall
  23. for (k in 0 until N) {
  24. for (i in 0 until N) {
  25. for (j in 0 until N) {
  26. if (danger[i][k] + danger[k][j] < danger[i][j]) {
  27. danger[i][j] = danger[i][k] + danger[k][j]
  28. }
  29. }
  30. }
  31. }
  32.  
  33. var totalDanger: Long = 0
  34. for (i in 0 until pathCount - 1) {
  35. totalDanger += danger[path[i]][path[i+1]]
  36. }
  37.  
  38. println(totalDanger)
  39. }
  40.  
Success #stdin #stdout 0.19s 44880KB
stdin
Standard input is empty
stdout
Standard output is empty