Advertisement
tuki2501

vdanger.cpp

Nov 16th, 2021
596
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define taskname "vdanger"
  5.  
  6. typedef long long ll;
  7.  
  8. void ioset() {
  9.   cin.tie(0)->sync_with_stdio(0);
  10.   if (fopen(taskname".in", "r")) {
  11.     freopen(taskname".in", "r", stdin);
  12.     // freopen(taskname".out", "w", stdout);
  13.   }
  14. }
  15.  
  16. template<typename T>
  17. bool chmin(T &a, T b) {
  18.   return a > b ? a = b, 1 : 0;
  19. }
  20.  
  21. void solve() {
  22.   int n, m;
  23.   cin >> n >> m;
  24.   vector<int> a(m);
  25.   for (auto &i : a) {
  26.     cin >> i;
  27.     i--;
  28.   }
  29.   vector<vector<int>> danger(n, vector<int>(n));
  30.   for (auto &i : danger) {
  31.     for (auto &j : i) cin >> j;
  32.   }
  33.   for (int k = 0; k < n; k++)
  34.   for (int i = 0; i < n; i++)
  35.   for (int j = 0; j < n; j++) {
  36.     chmin(danger[i][j], danger[i][k] + danger[k][j]);
  37.   }
  38.   int ans = 0;
  39.   for (int i = 1; i < m; i++) {
  40.     ans += danger[a[i - 1]][a[i]];
  41.   }
  42.   cout << ans << '\n';
  43. }
  44.  
  45. int main() {
  46.   ioset();
  47.   solve();
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement