挖地雷,题面跟洛谷的不太一样,用的爆搜,t掉了 求调
#include<bits/stdc++.h>
using namespace std;
struct dijiao{
int a,s,l[205];
}hole[205];
int sum=0,maxx=0,zh,pos[10086];
void search(int n){
int s=hole[n].s;sum+=hole[n].a;pos[n]=max(sum,pos[n]);
//cout<<sum<<' ';
if(sum>maxx){
zh=n;//cout<<sum<<' ';
maxx=sum;
}
if(n==6&&!s)return;
for(int i=1;i<=s;i++){
search(hole[n].l[i]);sum-=hole[hole[n].l[i]].a;
}
}
int main(){
int n,x,y;cin>>n;
for(int i=1;i<=n;i++)cin>>hole[i].a;
cin>>x>>y;
while(x&&y){
hole[x].s++;hole[x].l[hole[x].s]=y;
cin>>x>>y;
}
for(int i=1;i<=n;i++){sum=0;search(i);}
stack<int>s;int ans=maxx,c=hole[zh].a;
// cout<<endl;
while(maxx){
for(int i=zh-1;i>=1;i--){
maxx-=c;
if(pos[i]==maxx){
//maxx=pos[i];
c=hole[i].a;
s.push(i);
}
if(!maxx)break;
}
}
while(!s.empty()){
cout<<s.top()<<'-';s.pop();
}cout<<zh<<endl;
cout<<ans;
// cout<<zh<<endl;
//for(int i=1;i<=n;i++)cout<<pos[i]<<' ';
}
