#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
bool mp[30][30];
int arr[25];
int mx[25];
int pre[25];
int step[25];
stringstream ss;
int n,maxx=0,a=0;
int print(int a,int b){
if(pre[a]==0)return (b-1);
step[b]=pre[a];
b++;
print(pre[a],b);
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
cin>>mp[j][i];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
if(mp[i][j]&&(mx[j]>mx[i])){
mx[i]=mx[j];
pre[i]=j;
}
}
mx[i]+=arr[i];
if(maxx<mx[i]){
maxx=mx[i];
a=i;
}
}
int c=print(a,1);
for(int i=c;i>0;i--){
cout<<step[i]<<" ";
}
cout<<a<<endl;
cout<<maxx;
return 0;
}
DEVC++跑了测试点2,能很快出结果啊?为啥洛谷过不了