求助
查看原帖
求助
962598
BennyT楼主2023/10/6 14:47
#include<bits/stdc++.h>
using namespace std;
int a[50][50],n,f[50],vis[50],ans;
void dfs(int p,int sc){
	ans=max(ans,sc);
	for(int i=1;i<=n;i++){
		if(!vis[i] && a[p][i]){
			vis[i]=1;
			dfs(i,sc+f[i]);
			vis[i]=0;
		}
	} 
}
int main(){
	cin >> n;
	for(int i=1;i<=n;i++) cin >> f[i];
	int u=1;
	for(int i=n-1;i>0;i--,u++){
		for(int j=1;j<=i;j++){
			int x;
			cin >> x;
//			a[x][u]=1;
			a[u][x]=1;
		}
	}
	for(int i=1;i<=n;i++){
		vis[i]=1;
		dfs(i,f[i]);
		vis[i]=0;
	}
	cout << ans;
	return 0;
}
2023/10/6 14:47
加载中...