80分求助(第5个点错了)
查看原帖
80分求助(第5个点错了)
999366
fujiahao7700楼主2024/1/13 15:04
#include<bits/stdc++.h>
using namespace std;
int n,x[102],d[102],gps[101],c[101],ans=-1,t,maxx;
bool l[102][102],a;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x[i];
		d[i]=x[i];
		ans=max(ans,d[i]);
		gps[i]=i;
	}
	for(int i=1;i<n;i++){
		for(int j=1;j<=n-i;j++){
			cin>>a;
			l[j+i][i]=a;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<i;j++){
			if(l[i][j]==1){
           //第j个地窖到第i个地窖有路
				d[i]=max(d[i],d[j]+x[i]);
				gps[i]=j;
			}
			ans=max(ans,d[i]);
		}
	}
	for(int i=1;i<=n;i++){
		if(d[i]==ans)maxx=i;
	}
	while(gps[maxx]!=maxx){
		c[++t]=maxx;
		maxx=gps[maxx];
	}
	c[++t]=maxx;
	for(int i=t;i>=2;i--)cout<<c[i]<<" ";
	cout<<c[1]<<endl;
	cout<<ans;
}
2024/1/13 15:04
加载中...