这是一本通1262挖地雷,我错了三个点......
在洛谷上没找到该题,做过的dalao麻烦看一下错在了那
很可能是低级错误
大家不要见笑
谢谢!
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[201]={0},f[201]={0},l[201][201]={0};
void dfs(int i){
int jjj=0;
for(int j=1;j<=i;j++){
if(l[j][i]==1){
jjj=1;
break;
}
}
if(jjj==0){
cout<<i;
return ;
}
int maxx=0;
for(int j=1;j<=i;j++){
if(f[j]>=maxx&&l[j][i]){
maxx=j;
}
}
dfs(maxx);
cout<<"-"<<i;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
f[i]=a[i];
}
int x=1,y=1;
while(x!=0||y!=0){
cin>>x>>y;
l[x][y]=1;
}
for(int i=1;i<=n;i++){
int maxxx=0;
for(int j=1;j<i;j++){
if(l[j][i]==1) maxxx=max(maxxx,f[j]);
}
f[i]+=maxxx;
}
int ans=0,k;
for(int i=1;i<=n;i++){
if(f[i]>=ans){
ans=f[i];
k=i;
}
}
dfs(k);
cout<<endl<<ans;
return 0;
}
谢谢!