P2910Clear And Present Danger S

一、题目描述

  

 

 二、解题思路

  floyd模板题

三、代码实现

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 const int inf = INT_MAX;
 4 long long dp[110][110];
 5 int rd[11000];
 6 int main()
 7 {
 8     int n,m;
 9     int u;
10     cin >> n >> m;
11     for(int i = 1;i <= m;i++)
12         cin >> rd[i];
13     for(int i = 1;i <= n;i++)
14         for(int j = 1;j <= n;j++)
15             cin >> dp[i][j];
16     for(int k = 1;k <= n;k++)
17         for(int i = 1;i <= n;i++)
18             for(int j = 1;j <= n;j++)
19                 dp[i][j] = min(dp[i][j],dp[i][k] + dp[k][j]);
20     long long danger = 0;
21     for(int i = 1;i <= m - 1;i++)
22         danger += dp[rd[i]][rd[i + 1]];
23     cout << danger;
24     return 0;
25 }
posted @ 2022-02-13 19:35  scannerkk  阅读(43)  评论(0)    收藏  举报