测试点3和测试点5WA了
#include <bits/stdc++.h>
using namespace std;
#define int long long
int dp[25], n, p[25], pre[25];
bool G[25][25];
void print(int now) {
if (pre[now]) {
print(pre[now]);
}
cout << now << " ";
}
signed main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> p[i];
}
for (int i = 1; i <= n; i++) {
for (int j = 1, x; j < i; j++) {
cin >> x;
G[i][j] = x;
}
}
dp[1] = p[1];
for (int i = 1; i <= n; i++) {
dp[i] = p[i];
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (G[i][j] && p[i] + dp[j] >= dp[i]) {
pre[i] = j, dp[i] = p[i] + dp[j];
}
}
}
int mx = 0, mxi = 0;
for (int i = 1; i <= n; i++) {
if (mx <= dp[i]) {
mx = dp[i], mxi = i;
}
}
print(mxi);
cout << endl << mx;
return 0;
}