谁能帮我看看代码哪里出错了 题干链接
#include<bits/stdc++.h>
using namespace std;
const int N=210;
int num[N],n;
int dp[N],b[N][N];
int f[N];
int x,y;
int in[N];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>num[i];
cin>>x>>y;
while(x&&y){
b[x][y]=num[x];
in[y]++;
cin>>x>>y;
}
memset(dp,-1,sizeof(dp));
for(int i=1;i<=n;i++){
if(in[i])continue;
dp[i]=0;
}
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){//经过j更新i
if(b[j][i]==0||dp[j]==-1) continue;
if((b[j][i]+dp[j])>dp[i]&&b[j][i]+dp[j]>0){
dp[i]=b[j][i]+dp[j];
f[i]=j;
}
}
}
int k=n;
int jlk[N],rz=0;
while(k){
jlk[++rz]=k;
k=f[k];
}
cout<<jlk[rz];
for(int i=rz-1;i>=1;i--) cout<<'-'<<jlk[i];
cout<<endl<<dp[n]+num[n];
return 0;
}
/*
6
5 10 20 5 4 5
1 2
1 4
2 4
3 4
4 5
4 6
5 6
0 0
--------
3-4-5-6
34
*/
一本通过了3个点。一共10个