提交时间:2023-04-08 11:44:25

运行 ID: 73695

#include <bits/stdc++.h> typedef long long ll; using namespace std; int n,x,tmp; int a[1111],b[1111]; bool pd[1111][1111]; int main() { char c; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) { cin>>x; do { tmp=0; while(1) { c=getchar(); if(c>='0'&&c<='9') tmp=tmp*10+(c-'0'); else break; } if(tmp&&tmp!=i) pd[i][tmp]=1; }while(c!='\n'); } int maxn=0; b[1]=a[1]; for(int i=2; i<=n; i++) { b[i]=max(b[i],a[i]); for(int j=1;j<i;j++) if(pd[j][i]) b[i]=max(b[i],b[j]+a[i]); } for(int i=1; i<=n; i++) maxn=max(maxn,b[i]); cout<<maxn; return 0; }