提交时间:2024-04-02 13:28:29

运行 ID: 141105

#include<bits/stdc++.h> using namespace std; const int N=1010; int w[N],f[N],maxn; bool l[N][N]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>w[i]; f[i]=w[i]; maxn=max(maxn,w[i]); } for(int i=1;i<=n;i++){ int k=0,m; cin>>m; string s; getline(cin,s); for(int j=0;j<s.size();j++){ if('0'<=s[j]&&s[j]<='9') k=k*10+(s[j]-'0'); else{ l[m][k]=l[k][m]=1; k=0; } } if(k!=0){ l[m][k]=l[k][m]=1; k=0; } } for(int i=n-1;i>=1;i--){ for(int j=i+1;j<=n;j++){ if(l[i][j]){ f[i]=max(f[i],f[j]+w[i]); } maxn=max(maxn,f[i]); } } cout<<maxn; }