4 条题解
-
1
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<queue> #include<bits/stdc++.h> using namespace std; const int N=1e4+1314; int a[N],dp[N]; int n,x,y; bool flag; int fa[N]; int id,maxx; bool v[N][N]; 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]&&dp[i]<dp[j]+a[i]){ dp[i]=dp[j]+a[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
- 标签
- 递交数
- 214
- 已通过
- 74
- 上传者