4 条题解

  • 1
    @ 2025-8-1 9:38:05

    #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
    上传者