求助!ybt1262
  • 板块学术版
  • 楼主Secret_Sky_2021
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/11 10:02
  • 上次更新2023/11/3 10:36:30
查看原帖
求助!ybt1262
601270
Secret_Sky_2021楼主2023/7/11 10:02

谁能帮我看看代码哪里出错了 题干链接

#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个

2023/7/11 10:02
加载中...