蓝桥杯第六届省赛JAVA真题----生命之树

生命之树

在X森林里,上帝创建了生命之树。
他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。
上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, …, vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。
在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。
这个最大的和就是上帝给生命之树的评分。
经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。但是由于 atm 不擅长计算,他不知道怎样有效的求评分。他需要你为他写一个程序来计算一棵树的分数。

「输入格式」
第一行一个整数 n 表示这棵树有 n 个节点。
第二行 n 个整数,依次表示每个节点的评分。
接下来 n-1 行,每行 2 个整数 u, v,表示存在一条 u 到 v 的边。由于这是一棵树,所以是不存在环的。

「输出格式」
输出一行一个数,表示上帝给这棵树的分数。

「样例输入」
5
1 -2 -3 4 5
4 2
3 1
1 2
2 5

「样例输出」
8

「数据范围」
对于 30% 的数据,n <= 10
对于 100% 的数据,0 < n <= 10^5, 每个节点的评分的绝对值不超过 10^6 。
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 3000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

解析:我们简要分析之后可以发现这是一棵无向赋权图,要求是寻找一棵最大的生成树。这里采用dfs()+松弛进行求解。
v数组代表每个节点的评分,如果从 i 节点与 j 节点的权值和大于 i 结点本身的权值,那么更新i结点的权值,直达找出一条能够连接权值最大的路径。

import java.util.Scanner;public class Main {static int n;static int[] v;static int[][] arr;static boolean[] vis;static int max = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();v = new int[n+1];arr = new int[n+1][n+1];vis = new boolean[n+1];for (int i = 1; i <= n; i++) {v[i] = in.nextInt();}for (int i = 1; i < n; i++) {int a = in.nextInt();int b = in.nextInt();arr[a][b] = 1;arr[b][a] = 1;}dfs(1);System.out.println(max);}private static void dfs(int m) {vis[m] = true;for (int i = 1; i <= n; i++) {if (vis[i] == false && arr[m][i] != 0) {dfs(i);if (v[m] < (v[m] + v[i])) {v[m] = v[m] +v[i];}max = Math.max(max, v[m]);}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯第七届省赛JAVA真题----剪邮票

剪邮票 如【图1.jpg】, 有12张连在一起的12生肖的邮票。 现在你要从中剪下5张来&#xff0c;要求必须是连着的。 &#xff08;仅仅连接一个角不算相连&#xff09; 比如&#xff0c;【图2.jpg】&#xff0c;【图3.jpg】中&#xff0c;粉红色所示部分就是合格的剪取。 请你…

PAT甲级1080 Graduate Admission【模拟】

题目&#xff1a;https://pintia.cn/problem-sets/994805342720868352/problems/994805387268571136 题意&#xff1a; 模拟高考志愿录取。 考生根据总成绩和高考成绩排名。根据排名往下录取&#xff0c;每个人有k个志愿。 如果他填的学校名额没有满&#xff0c;那么就可以被录…

蓝桥杯第三届省赛JAVA真题----取球博弈

题目描述 今盒子里有n个小球&#xff0c;A、B两人轮流从盒中取球&#xff0c;每个人都可以看到另一个人取了多少个&#xff0c;也可以看到盒中还剩下多少个&#xff0c;并且两人都很聪明&#xff0c;不会做出错误的判断。 我们约定&#xff1a; 每个人从盒子中取出的球的数目…

目标检测之YOLO V2 V3

YOLO V2 YOLO V2是在YOLO的基础上&#xff0c;融合了其他一些网络结构的特性&#xff08;比如&#xff1a;Faster R-CNN的Anchor,GooLeNet的\(1\times1\)卷积核等&#xff09;&#xff0c;进行的升级。其目的是弥补YOLO的两个缺陷&#xff1a; YOLO中的大量的定位错误和基于区域…

蓝桥杯第五届省赛JAVA真题----n级台阶

有n级台阶。从地面&#xff08;第0级&#xff09;出发&#xff0c;首先连续的上台阶&#xff0c;上到不超过第n级的某一个位置后再连续的下台阶&#xff0c;直到回到地面。若每次上下台阶只允许走1级或2级&#xff0c;请问可能的上下台阶的方案数是多少&#xff1f; 特别地&am…

ubuntu下安装oracle

开源的世界挺有意思&#xff0c;安装oracle如此复杂。 主要分为四个大步骤&#xff1a; Java的安装Oracle安装前的准备Oracle的安装环境配置安装Oracle1、Java安装&#xff08;略&#xff09; 这一步网上有好多教程&#xff0c;大家可以自行安装。 验证Java是否安装成功&#x…

蓝桥杯第五届省赛JAVA真题----七对数字

今有7对数字&#xff1a;两个1&#xff0c;两个2&#xff0c;两个3&#xff0c;…两个7&#xff0c;把它们排成一行。 要求&#xff0c;两个1间有1个其它数字&#xff0c;两个2间有2个其它数字&#xff0c;以此类推&#xff0c;两个7之间有7个其它数字。如下就是一个符合要求的…

liunx-mysql-password重置(初始化)

1 #!/bin/bash #开头必写2 3 #数据库密码初始化4 pwd"admin"5 mysql -uroot <<EOF6 use mysql;7 UPDATE user SET passwordpassword(${pwd}) WHERE userroot;8 flush privileges;9 exit 10 EOF 转载于:https://www.cnblogs.com/CWQPHP/p/10484101.html

NCRE四级网络工程师考题详解----三级索引结构

在一个采用三级索引结构的UNIX 文件系统中&#xff0c;假设物理块大小为1KB&#xff0c;用64位表示一个物理块号。主索引表含有13 个块地址指针&#xff0c;其中前10 个直接指向盘块号&#xff0c;第11 个指向一级索引表&#xff0c;第12 个指向二级索引表&#xff0c;第13 个指…

laravel5单元测试

https://www.cnblogs.com/love-snow/articles/7641198.html转载于:https://www.cnblogs.com/anqiphp/p/10490767.html

NCRE四级网络工程师考题详解----目录分解法

在实现文件系统时&#xff0c;可采用"目录项分解法"加快文件目录检索速度。假设目录文件存放在磁盘上&#xff0c;每个盘块 512 字节。文件控制块有 64 字节&#xff0c;其中文件名占 8 字节&#xff0c;文件控制块分解后&#xff0c;第一部分占有 10 字节&#xff0…

自关联

设计省信息的表结构provinces idptitle 设计市信息的表结构citys idctitleproid citys表的proid表示城市所属的省&#xff0c;对应着provinces表的id值 问题&#xff1a; 能不能将两个表合成一张表呢&#xff1f; 思考&#xff1a; 观察两张表发现&#xff0c;citys表比provinc…

NCRE四级网络工程师考题详解----对等计算模型(P2P)

对等计算模型&#xff08;P2P&#xff09;: 在这种模型中&#xff0c;所有的计算机都可以当服务器。用中心服务器存放各个资源的目录。持续运转。以Napster为代表。 分布式非结构化P2P网络&#xff0c;没有中心服务器&#xff0c;采用泛洪方式&#xff0c;负载很重&#xff0c…

PyTorch 1.0 中文文档:常见问题解答

译者&#xff1a;冯宝宝 我的模型报告“cuda runtime error(2): out of memory” 正如错误消息所示&#xff0c;您的GPU显存已耗尽。由于经常在PyTorch中处理大量数据&#xff0c;因此小错误会迅速导致程序耗尽所有GPU资源; 幸运的是&#xff0c;这些情况下的修复通常很简单。这…

蓝桥杯第八届省赛JAVA真题----迷宫

标题&#xff1a;迷宫 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立&#xff0c;则&#xff1a; L表示走到左边的房间&#xff0c; R表示走到右边的房间&#xff0…

掌握MySQL数据库这些优化技巧,事半功倍!

一个成熟的数据库架构并不是一开始设计就具备高可用、高伸缩等特性的&#xff0c;它是随着用户量的增加&#xff0c;基础架构才逐渐完善。这篇文章主要谈谈MySQL数据库在发展周期中所面临的问题及优化方案&#xff0c;暂且抛开前端应用不说&#xff0c;大致分为以下五个阶段&am…

蓝桥杯第八届省赛JAVA真题----方格分割

标题&#xff1a;方格分割 6x6的方格&#xff0c;沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。 如图&#xff1a;p1.png, p2.png, p3.png 就是可行的分割法。 试计算&#xff1a; 包括这3种分法在内&#xff0c;一共有多少种不同的分割方法。 注意&#xff…

《剑指offer》第三十五题(复杂链表的复制)

// 面试题35&#xff1a;复杂链表的复制 // 题目&#xff1a;请实现函数ComplexListNode* Clone(ComplexListNode* pHead)&#xff0c;复 // 制一个复杂链表。在复杂链表中&#xff0c;每个结点除了有一个m_pNext指针指向下一个 // 结点外&#xff0c;还有一个m_pSibling 指向链…

蓝桥杯第八届省赛JAVA真题----最大公共子串

标题&#xff1a;最大公共子串 最大公共子串长度问题就是&#xff1a; 求两个串的所有子串中能够匹配上的最大长度是多少。 比如&#xff1a;”abcdkkk” 和 “baabcdadabc”&#xff0c; 可以找到的最长的公共子串是”abcd”,所以最大公共子串长度为4。 下面的程序是采用…

Python猫荐书系列:文也深度学习,理也深度学习

最近出了两件大新闻&#xff0c;相信大家可能有所耳闻。 我来当个播报员&#xff0c;给大家转述一下&#xff1a; 1、中国队在第 11 界罗马尼亚数学大师赛&#xff08;RMM&#xff09;中无缘金牌。该项赛事是三大国际赛事之一&#xff0c;被誉为中学奥数的最高难度。其中一道题…