1 solutions
-
0
#include <bits/stdc++.h> using namespace std; const int maxn = 110, maxm = 10010; int n, m, g[maxn][maxn], road[maxm], dist[maxn][maxn], ans; const int INF = (1<<29); int main() { cin >> n >> m; for (int i = 1; i <= m; i ++) cin >> road[i]; for (int i = 1; i <= n; i ++) { for (int j = 1; j <= n; j ++) { cin >> g[i][j]; dist[i][j] = (i == j) ? 0 : g[i][j]; } } for (int k = 1; k <= n; k ++) for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++) dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]); for (int i = 1; i < m; i ++) ans += dist[ road[i] ][ road[i+1] ]; cout << ans << endl; return 0; }
- 1
Information
- ID
- 1079
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 10
- Tags
- # Submissions
- 4
- Accepted
- 3
- Uploaded By