• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

想问为什么这个题只通过了50%的数据,然后就说我数组越界或者非法访问

在星际争霸(StarCraft)中,有3个种族。对于任意一个种族,他们的建筑建造都是有一个顺序的。这个顺序正好是一个树形结构,我们称之为"科技树"(Technology tree)。


在科技树中,只有一个建筑是不需要前置建筑的,我们把这个建筑的编号设为1。其他的建筑,有且仅有一个前置建筑。
比如建筑2的前置建筑为建筑1,意思是只有先建造了建筑1,才能建造建筑2。


一个种族有n个建筑,建筑1没有前置建筑,建筑i(2≤i≤n)的前置建筑为f。每个建筑的建造都需要费用,建筑i(1≤i≤n)的建造花费为a晶体矿和b高能瓦斯。


现在tokitsukaze想知道,如果想要建造建筑x,总共需要消耗多少晶体矿和高能瓦斯。
输入描述:

第一行包含一个T(T≤10),表示T组数据。对于每组数据:第一行包含两个正整数n,q(1≤n,q≤20000),表示有n个建筑和q次查询。接下来n行,每行包含两个整数a,b(0≤a,b≤300),表示建造建筑i需要花费a晶体矿和b高能瓦斯。接下来一行,包含n-1个正整数f(1≤f≤n)。第i个(1≤i<n)正整数fi(1≤fi<i)表示建筑i+1的前置建筑为fi。接下来q行,每行包含一个正整数x,表示询问。输出描述:

对于每个询问,输出一行,包含两个整数c,d(用空格隔开),表示如果想要建造建筑x,总共需要消耗c晶体矿和d高能瓦斯。示例1
输入

复制
14 41 510 100200 5066 881 1 21234输出

复制
1 511 105201 5577 193说明

第一组样例:如果想要建造建筑1,总共需要消耗1晶体矿和5高能瓦斯。如果想要建造建筑2,需要先建造建筑1,总共需要消耗1+10晶体矿和5+100高能瓦斯。如果想要建造建筑3,需要先建造建筑1,总共需要消耗1+200晶体矿和5+50高能瓦斯。如果想要建造建筑4,需要先建造建筑1和建筑2,总共需要消耗1+10+66晶体矿和5+100+88高能瓦斯。
import java.util.*;
public class Technology_tree {
static List v[];
static int p[];
static int g[];
static int fa[];

static public void dfs(int u,int a,int b) {
  p+=a;
  g+=b;
  if(v!=null) {
   for(int i=0;i

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!