站外题求助
  • 板块灌水区
  • 楼主Tsumiki_Mikan
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/3/18 15:59
  • 上次更新2023/10/23 21:14:48
查看原帖
站外题求助
611170
Tsumiki_Mikan楼主2023/3/18 15:59

【问题描述】 圣诞节又快到了,每年教堂里都有很多的圣诞特别礼物,圣诞特别礼物挂在一棵圣诞树上,这棵树有n层,每层有一件礼物,每件礼物都有一个价值,有的礼物还有一些连接线,与下层的礼物相连。领取礼物的规则如下:任选一件礼物,它的下面如果有连接线,则可以继续取它连接的礼物,依次类推,直至取到没有连接线的礼物才结束。你如果是第一个去取,怎样才能获得最大的价值呢?请你编写一个程序解决这个问题。

【输入】 第一行只有一个整数n,表示有n层礼物。 以下有n行数据,分别表示第1-n层礼物的状态,每行第一个数据表示该礼物的价值w,第二个数据p表示有p条连线,紧接p个数据表示它与哪些礼物相连。

【输出】 一个整数表示获得的最大价值。

输入样例

3
12 2 2 3
20 0
30 0

输出:42

#include<bits/stdc++.h>
using namespace std;
int n,a[1005],t,i2,l;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>l>>t;
		a[i]+=l;
		while(t>0){
			cin>>i2;
			a[i2]=a[i2]+a[i];
			t--;
		}
	}
	sort(a+1,a+1+n);
	cout<<a[n];
}

不布吉岛为什么样例对的提交全WA,蒟蒻在线求助qwq

2023/3/18 15:59
加载中...