提交时间:2023-04-11 13:17:50

运行 ID: 73881

#include<bits/stdc++.h> 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(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; for(int i=1;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; }