40pts!!!萌新求助!!!
查看原帖
40pts!!!萌新求助!!!
872386
Officer楼主2024/1/22 19:28
#include<bits/stdc++.h>
using namespace std;
int a[205],b[205][205],n;
int dp[205];
int maps[205],maxn=1;
void print(int n)
{
	if(maps[n]>0)
	{
		print(maps[n]);
	}
	cout<<n;
	if(n!=maxn)
	{
		cout<<"-";
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		dp[i]=a[i];
	}
	int x,y;
	while(cin>>x>>y&&x!=0&&y!=0)
	{
		b[x][y]=1;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<i;j++)
		{
			if(b[j][i]&&dp[i]<dp[j]+a[i])
			{
				dp[i]=dp[j]+a[i];
				maps[i]=j;
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(dp[maxn]<dp[i])
		{
			maxn=i;
		}
	}
	print(maxn);
	cout<<endl<<dp[maxn]<<endl;
    return 0;
}

2024/1/22 19:28
加载中...