AcWing 511:联合权值 ← DFS、链式前向星

【题目来源】
https://www.acwing.com/problem/content/513/

【题目描述】

无向连通图 G 有 n 个点,n−1 条边。
点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi,每条边的长度均为 1。
图上两点 (u,v) 的距离定义为 u 点到 v 点的
最短距离
对于图 G 上的点对 (u,v),若它们的距离为 2,则它们之间会产生 Wu×Wv 的
联合权值
请问图 G 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少?

【输入格式】
第一行包含 1 个整数 n。
接下来 n−1 行,每行包含 2 个用空格隔开的正整数 u、v,表示编号为 u 和编号为 v 的点之间有边相连。
最后 1 行,包含 n 个正整数,每两个正整数之间用一个空格隔开,其中第 i 个整数表示图 G 上编号为 i 的点的权值为 Wi。

【输出格式】
输出共 1 行,包含 2 个整数,之间用一个空格隔开,依次为图 G 上联合权值的最大值和所有联合权值之和。
由于所有联合权值之和可能很大,输出它时要对 10007 取余。

【数据范围】
1<n≤200000,
0<Wi≤10000

【输入样例】
5
1 2
2 3
3 4
4 5
1 5 2 3 10

【输出样例】
20 74

【算法分析】
本例代码,采用
链式前向星存无向图,并基于此进行无向图的深度优先搜索。详见:
https://blog.csdn.net/hnjzsyjyj/article/details/119917795
链式前向星的相关介绍可参考:

https://blog.csdn.net/hnjzsyjyj/article/details/119917795
https://blog.csdn.net/hnjzsyjyj/article/details/127190456
https://blog.csdn.net/hnjzsyjyj/article/details/126474608

【算法代码】
代码来源于:
https://www.acwing.com/solution/content/3516/

/* 链式前向星存图
val[idx] 表示第 idx 条边的权值。
e[idx] 表示第 idx 条边的终点。
ne[idx] 表示与第 idx 条边同起点的最近一次被添加的边的编号。
h[a] 表示以结点 a 为起点的最近一次被添加的边的编号。这个表述是在使用 ne[idx]=h[a] 时,也即使用 h[a]=idx++ 更新 h[a] 之前而言的。要特别注意这个语境。
*/#include <bits/stdc++.h>
using namespace std;const int N=2e5+5;
const int M=N<<1;
const int mod=10007;int n;
int h[N],e[M],ne[M],idx;
int w[N];
int f[N],g[N];
int imax, isum;void add(int a,int b) {e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}void dfs(int u, int father) {int sum=0, maxv=0;for(int i=h[u]; ~i; i=ne[i]) { //~i; equivalent to i!=-1;int j=e[i];if(j!=father) {dfs(j,u);imax=max(imax,w[u]*f[j]);imax=max(imax,maxv*w[j]);maxv=max(maxv,w[j]);isum=(isum+w[u]*g[j])%mod;isum=(isum+sum*w[j])%mod;sum=(sum+w[j])%mod;f[u]=max(f[u],w[j]);g[u]=(g[u]+w[j])%mod;}}
}int main() {scanf("%d",&n);memset(h,-1,sizeof(h));for(int i=0; i<n-1; i++) {int a,b;scanf("%d %d",&a,&b);add(a,b),add(b,a);}for(int i=1; i<=n; i++) scanf("%d",&w[i]);dfs(1,-1);printf("%d %d\n",imax,2*isum%mod);return 0;
}/*
in:
5
1 2
2 3
3 4
4 5
1 5 2 3 10out:
20 74
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/119917795
https://www.acwing.com/solution/content/3516/
https://blog.csdn.net/hnjzsyjyj/article/details/127190456
https://blog.csdn.net/hnjzsyjyj/article/details/126474608





 

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

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

相关文章

torch如何将网络参数初始化,又如何将参数还原成原始状态?

1、将网络参数初始化为原始状态 要将网络参数初始化为原始状态&#xff0c;可以使用PyTorch中的权重初始化方法。常见的权重初始化方式包括正态分布、均匀分布、Xavier初始化等。具体步骤如下&#xff1a; 导入torch和torch.nn模块 import torch import torch.nn as nn定义网…

【SpringCloud】注册中心和Ribbon负载均衡

SpringCloud 1.Eureka注册中心 1.1 Eureka的作用 注册中心拉取服务负载均衡远程调用 order-service得知user-service实例地址流程&#xff1a; user-service服务实例启动后&#xff0c;将自己的信息注册到eureka-server&#xff08;Eureka服务端&#xff09;&#xff0c;称…

linux审计工具aureport

aureport是一个用于查看和分析Linux操作系统中的审计日志的命令行工具。 审计日志是一个记录了系统活动、安全事件和资源访问的详细信息的日志文件。它可以帮助管理员监视和追踪系统上发生的各种活动&#xff0c;包括用户登录、文件访问、进程创建、权限更改等。 aureport命令…

二维数组数组指针相关知识

数组指针&#xff1a;数据类型 (*数组指针变量名)[列宽]&#xff1b;特点&#xff1a;1、本质上是一个指针类型的变量&#xff1b;2、指向的是一个二维数组&#xff0c;即数组指针的列宽等价于二维数组的列宽&#xff1b;例如&#xff1a; int array[2][5] {1,2,3,4,5,6,7,8,9…

redis主从复制模式和哨兵机制

目录 第一章、主从复制模式1.1&#xff09;Redis 主从复制模式介绍1.2&#xff09;Redis 主从复制实现、 第二章、哨兵机制2.1&#xff09;容灾处理之哨兵2.2&#xff09;Sentinel 配置 第一章、主从复制模式 1.1&#xff09;Redis 主从复制模式介绍 ①单点故障&#xff1a;数…

Spring中的事务管理

1 基本概念 事务&#xff1a;将一组操作抽象成一个不可再分的单位&#xff0c;这组操作可以有很多个&#xff0c;但是它们要么就全部都执行成功&#xff0c;这时算作事务执行成功&#xff1b;要不其中有操作执行失败&#xff0c;则其余操作都视为执行失败&#xff0c;这时候需…

二叉树的基本操作实现包括创建二叉树、插入节点、搜索节点、删除节点、遍历二叉树等详解

二叉树的基本操作主要包括创建二叉树、插入节点、搜索节点、删除节点、遍历二叉树等。下面是这些基本操作的 Python 代码实现。 创建二叉树 class TreeNode:def __init__(self, value):self.value valueself.left Noneself.right Noneclass BinaryTree:def __init__(self)…

honle电源维修UV电源控制器EVG EPS40C-HMI

好乐UV电源控制器维修&#xff1b;honle控制器维修&#xff1b;UV电源维修MUC-Steuermodul 2 LΛmpen D-82166 主要维修型号&#xff1a; EVG EPS 60/120、EVG EPS 100、EVG EPS200、EVG EPS 220、EVG EPS 340、EVG EPS40C-HMI、EVG EPS60 HONLE好乐uv电源维修故障包括&#…

localhost和127.0.0.1在以下四个方面存在区别

localhost和127.0.0.1在以下四个方面存在区别&#xff1a; 原理&#xff1a;localhost的原理是不经网卡传输&#xff0c;不会受到网卡协议的限制。而127.0.0.1则是经过网卡传输&#xff0c;依赖网卡协议&#xff0c;并受到网卡相关协议的限制。概念&#xff1a;localhost&…

申请开通QMT量化需要多少资金?免费开通!

最近量化交易在市场上大火&#xff0c;很多投资者想要参与进来。QMT量化软件是目前市场上一款比较常见并且强大的量化软件。那开通QMT量化交易软件需要多少资金&#xff1f; QMT量化交易软件是一种专门用于量化交易的工具&#xff0c;它能够帮助投资者通过程序化交易策略进行股…

如何解决“该公众号提供的服务出现故障,请稍后再试”

出现“该公众号提供的服务出现故障&#xff0c;请稍后再试” &#xff0c; 或者是出现 “公众号接口出现异常&#xff0c;请加入微信群接收接口报警” 的提问&#xff0c; 出现这个一般是开发者自身服务器出现问题导致的。 本文我来教大家如何排查。 第一步&#xff1a;加入告…

【力扣周赛】第 115 场双周赛(⭐优化背包DP)(TODO)

文章目录 竞赛链接Q1&#xff1a;2899. 上一个遍历的整数&#x1f4a9;&#xff08;阅读理解题&#xff0c;按题意模拟&#xff09;Q2&#xff1a;2900. 最长相邻不相等子序列 I&#xff08;贪心&#xff09;Q3&#xff1a;2901. 最长相邻不相等子序列 II&#xff08;类似 最长…

算法通关村第一关—白银挑战—链表高频面试算法题—查找两个链表的第一个公共子节点

文章目录 查找两个链表的第一个公共子节点&#xff08;1&#xff09;暴力求解法&#xff08;2&#xff09;使用哈希Hash⭐&#xff08;3&#xff09;使用集合⭐ - 与Hash类似&#xff08;4&#xff09;使用栈⭐&#xff08;5&#xff09;仍有更多方法&#xff0c;作者尚未理解&…

【小布_ORACLE笔记】Part11-1--RMAN Backups

Oracle的数据备份于恢复RMAN Backups 学习第11章需要掌握&#xff1a; 一.RMAN的备份类型 二.使用backup命令创建备份集 三.创建备份文件 四.备份归档日志文件 五.使用RMAN的copy命令创建镜像拷贝 文章目录 Oracle的数据备份于恢复RMAN Backups1.RMAN Backup Concepts&#x…

LeetCode | 965. 单值二叉树

LeetCode | 965. 单值二叉树 OJ链接 首先判断树为不为空&#xff0c;为空直接true然后判断左子树的val&#xff0c;和根的val相不相同再判断右子树的val&#xff0c;和根的val相不相同最后递归左子树和右子树 bool isUnivalTree(struct TreeNode* root) {if(root NULL)retur…

Python解释器的安装【侯小啾python领航班系列(一)】

Python解释器的安装【侯小啾python领航班系列(一)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

深入Spring Security魔幻山谷-获取认证机制核心原理讲解(新版)

文/朱季谦 这是一个古老的传说。 在神秘的Web系统世界里&#xff0c;有一座名为Spring Security的山谷&#xff0c;它高耸入云&#xff0c;蔓延千里&#xff0c;鸟飞不过&#xff0c;兽攀不了。这座山谷只有一条逼仄的道路可通。然而&#xff0c;若要通过这条道路前往另一头的…

Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能

原创/朱季谦 最近通过Vue Element ui实现了动态表单功能&#xff0c;该功能还包括了动态表单新增行、删除行、动态表单验证、动态表单提交功能&#xff0c;趁热打铁&#xff0c;将开发心得记录下来&#xff0c;方便以后再遇到类似功能时&#xff0c;直接拿来应用。 简化的页…

zabbix6.4.0配置邮件及企微机器人群聊告警

一、邮件告警 根据公司邮箱自行配置&#xff0c;电子邮件、用户账号密码填自己的邮箱账号密码 动作本次使用的默认的&#xff0c;如果为了更加美观可自行修改。 二、企业微信机器人告警 首先在企微上创建群聊&#xff0c;之后添加群聊机器人 将地址复制&#xff0c;后面用 …

【完整项目】基于Python+Tkinter+OpenCV+Yolo+手写OCR的双模式答题卡识别软件的设计与实现

目录 前言软件展示一、软件使用说明1.1 环境配置1.2 文件结构1.3 准备工作二、快速开始三、实现思路3.1 项目流程图3.2 界面设计3.3 核心设计3.3.1 模板制作3.3.2 识别算法基于传统图像处理的算法基于深度学习的算法3.3.3