2 条题解
-
0
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
- 标签
- 递交数
- 204
- 已通过
- 68
- 上传者