如题,调了1h了/px
题肯定是不难的,但这个WA70就很玄学
code:
#include<bits/stdc++.h>
#define reg register int
#define INF (1<<30)
#define int long long
#pragma GCC optimize("Ofast")
using namespace std;
int read(){
int res=0,fs=1; char c=getchar();
while(!(c>='0' && c<='9')){ if(c=='-')fs=-1; c=getchar(); }
while(c>='0' && c<='9')res=res*10+c-'0',c=getchar();
return res*fs;
}
void print(int x){
if(x<0) { putchar('-'); x=-x;}
if(x>9) print(x/10);
putchar(x%10+'0');
}
int n,cnt,m,f[5010][1010],ans,tmp,k,a[1010];
void dfs(int x,int sum){
ans=max(ans,sum);
for(int i=x+1;i<=n;i++){
if(f[x][i]==1){
dfs(i,sum+a[i]);
}
}
}
signed main() {
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>>f[i][j];
}
}
dfs(0,0);
for(int i=1;i<=n;i++){
dfs(i,a[i]);
}
cout<<ans;
return 0;
}