#include <bits/stdc++.h>
using namespace std;
bool a[23],b[23];
int n,c[23][23],d[23],aa[23],q = 0, p = 0;
inline bool dfe(int bb){
for(int i = 1; i <= n; ++i) if(c[bb][i] && !d[i]) return false;
return true;
}
inline void def(int bb,int cc,int qq){
if(dfe(bb)){
if(q < qq){
q = qq;
p = cc;
for(int i = 1;i <= cc;++i) aa[i] = b[i];
}
return ;
}
for(int i = 1;i <= n;++i)
if(c[bb][i] && !d[i]){
d[i] = true;
b[cc + 1] = i;
def(i, cc + 1, qq + a[i]);
d[i] = false;
}
}
int main(){
scanf("%d",&n);
for(int i = 1;i <= n;++i) scanf("%d",&a[i]);
for(int i = 1;i < n;++i) for(int j = i + 1; j <= n; ++j) scanf("%d",&c[i][j]);
for(int i = 1;i <= n;++i){
d[i] = true;
b[1] = i;
def(i, 1, a[i]);
d[i] = false;
}
for(int i = 1;i <= p;++i) printf("%d ",aa[i]);
printf("\n%d",q);
return 0;
}
有没有大佬来指点一下P219
6