4 条题解
- 
  -1
using namespace std; const int N = 200 + 10; int n, arr[N], dp[N], x, y, maxx, id; bool v[N][N]; int fa[N]; bool 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 >> arr[i]; dp[i] = arr[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] && dp[i] < dp[j] + arr[i]) { dp[i] = dp[j] + arr[i]; fa[i] = j; } } if (maxx < dp[i]) { maxx = dp[i]; id = i; } } f(id); cout << endl << maxx; return 0; } 
信息
- ID
 - 2965
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 3
 - 标签
 - 递交数
 - 215
 - 已通过
 - 75
 - 上传者