4 条题解
-
1
#include<bits/stdc++.h> using namespace std; const int N = 200+10; const int INF = 0x3f3f3f3f; int n,a[N],dp[N]; int x,y,maxx,fa[N],maxid; bool v[N][N],flag; void f(int x){ if(fa[x]){ f(fa[x]); } if(flag){ cout << "-"; }else flag = 1; cout << x; } int main(){ cin >>n; for(int i = 1;i<=n;i++){ cin >> a[i]; dp[i] = a[i]; } while(cin >> x >> y){ if(x == 0&&y == 0)break; v[x][y] = 1; } for(int i = 1;i<=n;i++){ for(int j =1;j<i;j++){ if(v[j][i] && a[i] + dp[j] > dp[i]){ dp[i] = a[i] + dp[j]; fa[i] = j; } } if(maxx < dp[i]){ maxx = dp[i]; maxid = i; } } f(maxid); cout << endl << maxx; return 0; }1.
信息
- ID
- 2965
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 214
- 已通过
- 74
- 上传者