提交时间:2023-04-08 08:09:21
运行 ID: 73586
#include<bits/stdc++.h> using namespace std; long long a[10010],dp[10010]; bool book[1010][1010],flag[10010]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++){ char ch; int x; cin>>x; if(i!=x)book[i][x]=1; while(true){ ch=getchar(); if(ch==' '){ cin>>x; if(i!=x)book[i][x]=1; } if(ch=='\n')break; } } for(int i=1;i<=n;i++)dp[i]=a[i]; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(book[i][j]==1)dp[j]=max(dp[j],dp[i]+a[j]); } } sort(dp,dp+n+1); cout<<dp[n]<<endl; return 0; }