1 条题解
-
0hehongyi LV 7 @ 2021-12-25 02:28:50
#include <iostream>
using namespace std;
bool a[210][210];//a[i][j]表示第i个地窖和第j个地窖是否是通路
int w[210],n,f[210],surf[210];//f[i]表示从第i个地窖开始挖的最多地雷数,surf用来存顺序
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>w[i];
}
int x,y;
while(cin>>x>>y){
if(x==0&&y==0){
break;
}
a[x][y]=1;
}
f[n]=w[n];
for(int i=n-1;i>=1;i--){
int k=0,l=0;
for(int j=i+1;j<=n;j++){
if(a[i][j]==1&&f[j]>l){
l=f[j];
k=j;
}
f[i]=l+w[i];
surf[i]=k;
}
}
int k=1;
for(int i=1;i<=n;i++){
if(f[k]<f[i]){
k=i;
}
}
int maxn=f[k];
cout<<k;//先输出起始点
k=surf[k];
while(k!=0){//向后的链表
cout<<"-"<<k;
k=surf[k];
}
cout<<endl;
cout<<maxn<<endl;
return 0;
}
- 1
信息
- 难度
- 9
- 分类
- (无)
- 标签
- 递交数
- 41
- 已通过
- 2
- 通过率
- 5%
- 上传者