Description

  进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通。
每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关。如果小火山取走了这个房间的宝藏,那么这个房间通往其他房间的门就永远打不开了,也就是说后面的宝藏小火山是得不到了(进入这个房间的门是不会关闭的,小火山还是可以回去的);如果小火山不取这个宝藏,而是去打开通往另一房间的门,那么这个房间的宝藏就会消失, 小火山就得不到这个房间的宝藏。
不过,小火山已经有了藏宝图,知道每一个房间的宝藏的价值,现在想请你帮小火山算一下,他最多能获得多少钱去买股票?
Input 输入第一行是一个整数T(T <= ), 表示一共有T组数据。
对于每一组数据,第一行是两个数N, S( <= N <= , <= S <= N), N代表有N个房间, S代表小火山进去宝藏后的
起始房间(小火山怎么进入起始房间不重要),第二行是N个数,代表每个房间宝藏的价值, 随后N-1行, 每行两个数A, B, 代表
A, B这两个房间联通。
Output 对于每一组数据输出一个整数, 代表小火山能获得的最大钱数。 Sample Input Sample Output

题意 从一个房间进入,房间的宝藏如果拿 则通往别的门会关闭,不过不拿,宝藏会消失,给你地图,问能拿到的最大宝藏数。

方法 从这个点出发进行搜索,把一条路走到底,选出这条路上的最大值,所有路的路都走完,看选择这个房间还是这个路上的宝藏。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include <math.h>
#include<queue>
#define ll long long
#define met(a,b) memset(a,b,sizeof(a));
#define N 10010
using namespace std;
struct node
{
int u,v,next;
}Map[N<<];
int k;
int s[N],vis[N],a[N];
void add(int u,int v)
{
Map[k].u=u;
Map[k].v=v;
Map[k].next=a[u];
a[u]=k++;
}
int dfs(int h)
{
int sum=;
vis[h]=;
for(int i=a[h];i!=-;i=Map[i].next)
{
int v=Map[i].v;
if(!vis[v])
{
vis[v]=;
sum+=dfs(v);
}
}
return max(s[h],sum);
}
int main()
{
int t,n,m,e,f;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&s[i]);
k=;
met(a,-);
for(int i=;i<n;i++)
{
scanf("%d %d",&e,&f);
add(e,f);
add(f,e);
}
met(vis,);
printf("%d\n",dfs(m));
}
return ;
}

(zzuli)1907 小火山的宝藏收益的更多相关文章

  1. zzuli 1907: 小火山的宝藏收益 邻接表+DFS

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 113  Solved: 24 SubmitStatusWeb Board Description    ...

  2. ZZULIoj 1907 小火山的宝藏收益

    Description      进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通.   每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这 ...

  3. zzulioj 1907小火山的宝藏交易(dfs记忆化搜索)

    #include <stdio.h> #include <algorithm> #include <string.h> #include <vector> ...

  4. zzuli 1905 小火山的跳子游戏

    Description   小火山和火山火山在一块玩跳子游戏.规则如下:   1:跳子的起始位置为0,棋盘大小从1到N   2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k   3:跳 ...

  5. ZZULIoj 1912 小火山的爱情密码

    Description 小火山获得了一个字符串,然而大火山让小火山从里面截取一段字符串,并且让小火山截取的字符串满足一些字符达到一定数量. 小火山觉得很容易,但是他想要知道他至少得截取多长的字符串. ...

  6. ZZULIoj 1913: 小火山的计算能力

    Description 别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来. Input 首先是一个t(1<=20)表示测试组数.然后一个表达式,表达式长 ...

  7. ZZULIoj 1908 小火山的围棋梦想

    Description   小火山最近喜欢上了围棋.   对于围棋,其实小火山是一窍不通的.现在棋盘上,有很多小火山的棋子. 如果棋盘上有这样的一个位置, 那么这个位置也会变成小火山 的棋子:这样的位 ...

  8. Problem H: 小火山的围棋梦想 多校训练2(小火山专场)

    题目链接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1908 题意:如果'.'被'*'围起来,就把'.'变为'*'. 分析:如果是'*'直接输出, ...

  9. Problem A: 小火山的跳子游戏 多校训练2(小火山专场)(周期)

    题目链接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?cid=1158&pid=0 zzuli 1905  题意:如果k=1的话是1,2,3,4. ...

随机推荐

  1. linux下编译安卓ffmpeg

    本次编译属于2013年6月项目的一部分,重新修改使用. 为统一工程版本 ffmpeg版本为1.2.1 本次的目录结构为 工程目录/jni/Android.mk 工程目录/jni/Application ...

  2. 局域网yum服务器创建

    yum createrepo createrepo dir 配置httpd发布yum-repo; 在客户端添加yum.rep配置文件;

  3. [三]ajax重要属性

    readState:0初始化,1建立,2已接收,3处理中,4请求完成,响应就绪 status:200成功,404未找到页面失败 onreadystatechange:状态改变自动调用的方法 respo ...

  4. 浅谈js单例模式

    单例模式就是在系统中保存一个实例,就是一个全局变量,在团队开发中,为了实现一些相似的功能,比如不同页面之间的表单验证,可能需求是不一样的,但是呢命名可能一样,这时就会产生冲突,这时候单例模式就能很好的 ...

  5. new Date() iso不支持兼容性问题

    在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10-21') 的日期对象. 但是在IOS5版本里面的Safari解释ne ...

  6. java中对map使用entrySet循环

    根据JDK5的新特性,用For循环Map,例如循环Map的Key 1 2 3 for(String dataKey : paraMap.keySet())   {       System.out.p ...

  7. [ES6] 22. Const

    'const' keyword is for creating a read only variable, something you can never change once created. ' ...

  8. SNMP协议总结

    说明:本文仅供学习交流,转载请标明出处,欢迎转载! SNMP(Simple Network Management Protocal),简单网络管理协议,其前身是SGMP协议(简单网关监控协议),该协议 ...

  9. 关于IB_DESIGNABLE / IBInspectable的那些事

    前言 IB_DESIGNABLE / IBInspectable 这两个关键字是在WWDC 2014年”What’s New in Interface Builder”这个Session里面,用Swi ...

  10. c语言入门经典必背18个程序

    1 . /* 输出 9*9 口诀.共 9 行 9 列, i 控制行, j 控制列. */ #include "stdio.h" main() {int i,j,result; fo ...