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
 - 标签
 - 递交数
 - 215
 - 已通过
 - 75
 - 上传者