Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
73588 | 陆彦哲 | 金矿 | C++ | 解答错误 | 20 | 790 MS | 272 KB | 720 | 2023-04-08 08:13:51 |
#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]); } } cout<<dp[n]<<endl; return 0; }