我建议添加图论标签,你们看:
#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f3fll
using namespace std;
vector<int> v[22];
int a[22],b[22][22];
bool vis[22];
int ans;
vector<int> p;
vector<int> p2;
void dfs(int x,int sum){
if(v[x].size()==0){
if(ans<sum){
ans=sum;
p2.clear();
for(int i = 0;i < p.size();++i){
p2.push_back(p[i]);
}
}return ;
}
for(int i = 0;i < v[x].size();++i){
p.push_back(v[x][i]);
vis[v[x][i]]=1;
dfs(v[x][i],sum+a[v[x][i]]);
p.pop_back();
vis[v[x][i]]=0;
}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n;
cin>>n;
for(int i = 1;i <= n;i++)cin>>a[i];
for(int i = 1;i <= n-1;i++){
for(int j = i+1;j <= n;j++){
cin>>b[i][j];
if(b[i][j]&&i!=j)v[i].push_back(j);
}
}
int mx = -inf;
for(int i = 1;i <= n;i++){
p.clear();
p.push_back(i);
dfs(i,a[i]);
mx=max(mx,ans);
}
for(int j = 0;j < p2.size();j++){
cout<<p2[j]<<' ';
}
cout<<endl<<mx;
return 0;
//十年OI一场空,define int 见祖宗。
//十年OI一场空,不开long long见祖宗。
}