#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ll n, v;
cin >> n;
vector<vector<ll>> mat(n, vector<ll>(n));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin >> mat[i][j];
vector<ll> order(n), result(n);
vector<bool> visited(n);
for(int i=0;i<n;i++) {
cin >> order[i];
order[i]--;
}
for(int i=n-1;i>=0;i--) {
ll sum = 0;
int k = order[i];
visited[k] = 1;
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
mat[i][j] = min(mat[i][j], mat[i][k] + mat[k][j]);
if(visited[i] && visited[j]) sum += mat[i][j];
}
}
result[i] = sum;
}
for(int i=0;i<n;i++) {
if(i!=0) cout << " ";
cout << result[i];
}
}
1547C - Pair Programming | 550A - Two Substrings |
797B - Odd sum | 1093A - Dice Rolling |
1360B - Honest Coach | 1399C - Boats Competition |
1609C - Complex Market Analysis | 1657E - Star MST |
1143B - Nirvana | 1285A - Mezo Playing Zoma |
919B - Perfect Number | 894A - QAQ |
1551A - Polycarp and Coins | 313A - Ilya and Bank Account |
1469A - Regular Bracket Sequence | 919C - Seat Arrangements |
1634A - Reverse and Concatenate | 1619C - Wrong Addition |
1437A - Marketing Scheme | 1473B - String LCM |
1374A - Required Remainder | 1265E - Beautiful Mirrors |
1296A - Array with Odd Sum | 1385A - Three Pairwise Maximums |
911A - Nearest Minimums | 102B - Sum of Digits |
707A - Brain's Photos | 1331B - Limericks |
305B - Continued Fractions | 1165B - Polycarp Training |