树与图深度优先遍历——acwing

题目一:树的重心

846. 树的重心 - AcWing题库

 

分析

采用暴力枚举,试探每个点,除去之后,连通分量最大值是多少, 各个点的最大值找最小的

因为可以通过 dfs 来得到 根u以下点数,以及可以求各分树的点数,

所以采用 邻接表存储数据的方式。

vis 标记搜索

需要存 最终答案 ans

需要存每个顶点及其以下点数 sum , 需要存每个顶点子树 res

代码 

#include<bits/stdc++.h>
using namespace std;const int N = 1e5+10, M = 2*N;int h[N], e[M], ne[M], idx;
int n;
int ans = N; bool vis[N];
// 前插法将b插入a链表
void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
// 以u为根子树的点的大小
int dfs(int u) {vis[u] = true; // 搜索int sum = 1, res = 0; // 以u为,根子树大小, ans 为除去根for(int i = h[u]; i != -1; i = ne[i]) {int j = e[i];if(!vis[j]) {int s = dfs(j);res = max(res,s); // 该根多个子树的最大值sum += s; // 该根往下的总和}}res = max(res,n-sum); // 该根往下最大值,以及 剩下的比较ans = min(ans,res); //求到了除去u连通分量点最大值, 更新暴力枚举中每个u的最小值。return sum;//往上返回点数
}int main() {memset(h,-1,sizeof h);cin >> n;for(int i = 0; i < n-1; i ++) {int a, b;cin >> a >> b;add(a,b), add(b,a); // 搭建无向图}dfs(1);//都是可以相通的,随便dfs一个顶点cout << ans << endl;return 0;
}

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

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

相关文章

Mysql Cluster

MySQL 集群&#xff08;MySQL Cluster&#xff09;是一个分布式数据库解决方案&#xff0c;旨在提供高可用性、高性能、自动分片和无共享架构。它主要使用 MySQL 的 NDB 存储引擎&#xff0c;适用于需要高可用性和高扩展性的场景&#xff0c;通常用于需要处理大量事务和实时响应…

Qt Qtablewidget 标题 QHeaderView 增加可选框 QcheckBox

创建自定义QHeaderView #pragma once#include <QObject> #include <QHeaderView> #include <QPainter> #include <QMouseEvent>class SSHeaderView : public QHeaderView {Q_OBJECTprivate:bool isChecked;int m_checkColIdx; public:SSHeaderView(i…

Data Uncertainty Learning in Face Recognition 论文阅读

Data Uncertainty Learning in Face Recognition 论文阅读 Abstract1. Introduction2. Related Work3. Methodology3.1. Preliminaries3.2. Classification-based DUL for FR3.3. Regression-based DUL for FR3.4. Discussion of Related Works 4. Experiments4.1. Datasets an…

基础算法——搜索与图论

搜索与图论 图的存储方式2、最短路问题2.1、Dijkstra算法&#xff08;朴素版&#xff09;2.2、Dijkstra算法&#xff08;堆优化版&#xff09;2.3、Bellman-Ford算法2.4、SPFA求最短路2.5、SPFA判负环2.6、Floyd算法 图的存储方式 2、最短路问题 最短路问题可以分为单源最短路…

典型常见的知识蒸馏方法总结一

来源&#xff1a;https://github.com/HobbitLong/RepDistiller收录的方法 NeurIPS2015: Distilling the Knowledge in a Neural Network 知识蒸馏开山之作&#xff0c;从logits中蒸馏知识&#xff0c;KL散度损失 ICLR2015&#xff1a;FitNets: Hints for Thin Deep Nets A h…

十、软件设计架构-微服务-服务调用Feign

文章目录 前言一、Feign介绍1. 什么是Feign2. 什么是Http客户端3. Feign 和 OpenFeign 的区别 二、Feign底层原理三、Feign工作原理详解1. 动态代理机制2. 动态代理的创建过程3. 创建详细流程4. FeignClient属性 四、Feign使用1. 常规调用2.日志打印3. 添加Header 前言 服务调…

【深度学习】检索增强生成 RAG

RAG (Retrieval-Augmented Generation) 是由 Facebook AI Research (FAIR) 提出的。具体来说&#xff0c;RAG 是在 2020 年的论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 中首次被提出的。 为什么提出 RAG&#xff1f; 在 NLP 中&#xff0c;有很…

工业节能水泵如何节能?

在现代工业生产中&#xff0c;水泵作为一种重要的流体输送设备&#xff0c;广泛应用于各个领域。无论是在制造业、化工、能源&#xff0c;还是在污水处理、灌溉等行业&#xff0c;水泵在保证生产流程顺畅的同时&#xff0c;也消耗了大量的能源。 一、工业水泵系统的能耗现状 …

在 LS-DYNA 中将应力转换为用户定义的坐标系

介绍 通常&#xff0c;使用 LS-DYNA 或 Ansys Mechanical 等仿真工具解决工程问题需要将张量结果与解析解进行比较。一个这样的例子是加压圆柱体&#xff0c;其中圆周应力或环状应力是感兴趣的主要应力度量。例如&#xff0c;如果对具有复杂端部处理的几何结构进行此类仿真&am…

树莓集团是如何链接政、产、企、校四个板块的?

树莓集团作为数字影像行业的积极探索者与推动者&#xff0c;我们通过多维度、深层次的战略举措&#xff0c;将政、产、企、校四个关键板块紧密链接在一起&#xff0c;实现了资源的高效整合与协同发展&#xff0c;共同为数字影像产业的繁荣贡献力量。 与政府的深度合作政府在产业…

【系统设计】高可用之各种缓存对比

Guava Local caching, done right, and supporting a wide variety of expiration behaviors. Guava Caches是轻量的本地缓存&#xff0c;生命周期随着JVM的销毁而结束&#xff0c;相比于自己使用map来说&#xff0c;它提供了缓存汰换、回调、过期、并发等多种能力&#xff0c;…

USB 音频全析:技术核心与多元应用的深度洞察

USB 之基&#xff1a;连接与传输的基石 在科技浪潮汹涌澎湃的时代长河中&#xff0c;USB&#xff0c;这一通用串行总线&#xff0c;宛如一颗璀璨星辰&#xff0c;高悬于个人电脑的浩瀚苍穹已逾十载。其连接之广泛&#xff0c;恰似一张无形大网&#xff0c;轻松将麦克风、扬声器…

工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet

论文&#xff1a;https://arxiv.org/pdf/2311.14897v3.pdf 项目&#xff1a;https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位&#xff0c;这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…

debian ubuntu armbian部署asp.net core 项目 开机自启动

我本地的环境是 rk3399机器&#xff0c;安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库&#xff0c;但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…

qt QNetworkAccessManager详解

1、概述 QNetworkAccessManager是QtNetwork模块中的一个核心类&#xff0c;它允许应用程序发送网络请求并接收响应。该类是网络通信的基石&#xff0c;提供了一种方便的方式来处理常见的网络协议&#xff0c;如HTTP、HTTPS等。QNetworkAccessManager对象持有其发送的请求的通用…

21、结构体成员分布

结构体中的成员并不是紧挨着分布的&#xff0c;内存分布遵循字节对齐的原则。 按照成员定义的顺序&#xff0c;遵循字节对齐的原则存储。 字节对齐的原则&#xff1a; 找成员中占据字节数最大的成员&#xff0c;以它为单位进行空间空配 --- 遇到数组看元素的类型 每一个成员距离…

前端基础——CSS

美化文档 HTML内部添加样式 本节我们来学习如何在标签中引入CSS样式。 1 在标签中添加声明 声明的关键字是style后接等号&#xff08;&#xff09;再接引号&#xff08;""&#xff09;&#xff0c;即style"" 具体声明如下&#xff1a; <input typ…

WPS解决Word文件引入excel对象文件无法打开提示“不能启动此对象...”的问题

一、问题现象 接收到了一份 Word文件&#xff0c;里面引入了一个Excel对象文件&#xff0c;双击时候&#xff0c;wps出现卡顿&#xff0c;过一会之后弹出错误提示&#xff1a;不能启动此对象... 二、解决方法 1.点击WPS左上角图标&#xff0c;并打开右上角设置&#xff0c;萱蕚…

在 Linux 系统中,可以使用以下简单快捷的方法来模拟 CPU 负载

在 Linux 系统中&#xff0c;可以使用以下简单快捷的方法来模拟 CPU 负载&#xff1a; 1. 使用 stress 工具 stress 是一个专门用于压力测试的工具&#xff0c;可以模拟 CPU、内存、I/O 等负载。 安装 stress&#xff1a; # Debian/Ubuntu 系统 sudo apt-get install stres…

spring下的beanutils.copyProperties实现深拷贝

spring下的beanutils.copyProperties方法是深拷贝还是浅拷贝&#xff1f;可以实现深拷贝吗&#xff1f; 答案&#xff1a;浅拷贝。 一、浅拷贝深拷贝的理解 简单说拷贝就是将一个类中的属性拷贝到另一个中&#xff0c;对于BeanUtils.copyProperties来说&#xff0c;你必须保…