当前位置: 首页 > news >正文

如何判断树上一个点是否在直径上

# 旅游规划

## 题目描述

W市的交通规划出现了重大问题,市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流。但由于人员不足,W市市长决定只在最需要安排人员的路口安排人员。  
具体来说,W市的交通网络十分简单,由n个交叉路口和n−1条街道构成,交叉路口路口编号依次为0,1,…,n−1。任意一条街道连接两个交叉路口,且任意两个交叉路口间都存在一条路径互相连接。  
经过长期调查,结果显示,如果一个交叉路口位于W市交通网最长路径上,那么这个路口必定拥挤不堪。所谓最长路径,定义为某条路径p=(v1,v2,v3,⋯,vk),路径经过的路口各不相同,且城市中不存在长度大于k的路径,因此最长路径可能不唯一。因此W市市长想知道哪些路口位于城市交通网的最长路径上。

## 输入格式

第一行一个整数n;  
之后n−1行每行两个整数u,v,表示u和v的路口间存在着一条街道。

## 输出格式

输出包括若干行,每行包括一个整数表示某个位于最长路径上的路口编号。  
为了确保解唯一,请将所有最长路径上的路口编号按编号顺序由小到大依次输出。

## 样例 #1

### 样例输入 #1

```
10
0 1
0 2
0 4
0 6
0 7
1 3
2 5
4 8
6 9
```

### 样例输出 #1

```
0
1
2
3
4
5
6
8
9
```

## 提示

1≤n≤2×10^5。

核心思路

注意到,向上最长链+向下最长链 = 直径 之时 ,点在直径上

AC 代码

#include<bits/stdc++.h>
using namespace std;
const int N = 114514;
int n;
int fix(int x){int s = 0;for(int i = 2;i <= sqrt(x);i++){if(x%i == 0){s += i;//	cout<<i<<endl;if(i != x/i){s += x/i;}if(s > x){return 11451419;}}}return s+1;
}
vector<int> g[500010];
int d1[500010],d2[500010],up[500010],ans;
bool tag[500010];
void dfs(int u,int fa) {
//	cout<<u<<endl;for (int v:g[u]) {if(v == fa)continue;dfs(v,u);int tot = d1[v] + 1;if (tot > d1[u]) {d2[u] = d1[u];d1[u] = tot;} else {d2[u] = max(d2[u], tot);}}ans= max(ans, d1[u] + d2[u]);return;
}void ys(int u,int fa) {for (int v:g[u])  {if(v == fa)continue;up[v] = max(up[u],(d1[u] == d1[v]+1?d2[u]:d1[u])) +1; ys(v,u);}return;
}
int main(){int n;cin>>n;for(int i = 1;i <= n-1;i++){int u,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}dfs(0,-1);ys(0,-1);for (int i = 0; i < n; i++) {if (d1[i] + max(d2[i], up[i]) == ans) {printf("%d\n", i);}}return 0;
}

相关文章:

如何判断树上一个点是否在直径上

# 旅游规划 ## 题目描述 W市的交通规划出现了重大问题&#xff0c;市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流。但由于人员不足&#xff0c;W市市长决定只在最需要安排人员的路口安排人员。 具体来说&#xff0c;W市的交通网络十分简单&#xff0c;由n个…...

docker 部署 RabbitMQ

命令 docker run -d --namerabbitmq \ -p 5671:5671 -p 5672:5672 -p 4369:4369 \ -p 15671:15671 -p 15672:15672 -p 25672:25672 \ -e RABBITMQ_DEFAULT_USERusername\ -e RABBITMQ_DEFAULT_PASSpassword\ -v /usr/local/rabbitmq/data:/var/lib/rabbitmq \ -v /usr/local/r…...

设计模式 - 过滤器模式

💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...

使用 Locust 进行本地压力测试

在应用开发和运维过程中&#xff0c;了解应用在高负载情况下的表现至关重要。压力测试可以帮助你识别性能瓶颈和潜在问题。本文将介绍如何使用 Locust 工具进行本地压力测试&#xff0c;模拟高并发场景&#xff0c;并分析测试结果。 1. 什么是 Locust&#xff1f; Locust 是一…...

【图形学】TA之路-矩阵应用平移-旋转-大小

矩阵应用&#xff1a;在 Unity 中&#xff0c;Transform 和矩阵之间的关系非常密切。Transform 组件主要用于描述和控制一个物体在三维空间中的位置、旋转和缩放&#xff0c;而这些操作背后实际上都是通过矩阵来实现的 1. Transform 组件与矩阵的关系 Transform 组件包含以下…...

Spring 循环依赖解决方案

文章目录 1. 循环依赖的产生2. 循环依赖的解决模型3. 基于setter/Autowired 的循环依赖1_编写测试代码2_初始化 Cat3_初始化 Person4_ 回到 Cat 的创建流程5_小结 4. 基于构造方法的循环依赖5. 基于原型 Bean 的循环依赖6. 引人AOP的额外设计7. 总结 IOC 容器初始化bean对象的逻…...

可视化大屏:如何get到领导心目中的“科技感”?

你如果问领导可视化大屏需要什么风格的&#xff0c;领导大概率说科技感的&#xff0c;然后你就去做了&#xff0c;结果被劈了一顿&#xff0c;什么原因&#xff1f;因为你没有get到领导心目中描述的科技感。 一、为什么都喜欢科技感 科技感在可视化大屏设计中具有以下好处&am…...

基于Python的金融数据采集与分析的设计与实现

基于Python的金融数据采集与分析的设计与实现 “Design and Implementation of Financial Data Collection and Analysis based on Python” 完整下载链接:基于Python的金融数据采集与分析的设计与实现 文章目录 基于Python的金融数据采集与分析的设计与实现摘要第一章 绪论1…...

使用Sanic和SSE实现实时股票行情推送

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…...

redis散列若干记录

字典 redis本身使用字典结构管理数据 redis使用hash表实现字典结构 使用了什么hash算法 使用SipHash算法&#xff0c;该算法能有效防止Hash表碰撞&#xff0c;并有不错的性能 hash冲突怎么解决 使用链表法解决hash冲突 hash表如何扩容 渐进式扩容&#xff0c;不会引起线程长期阻…...

Java面试八股之什么是STOMP协议

什么是STOMP协议 STOMP&#xff08;Simple Text Oriented Messaging Protocol&#xff09;是一种为消息队列和事件驱动架构设计的轻量级协议&#xff0c;主要用于在消息中间件之间进行消息交换。它的设计原则是简单、跨平台和易于实现&#xff0c;这使得STOMP成为许多实时应用…...

【自用】Python爬虫学习(一):爬虫基础与四个简单案例

Python爬虫学习&#xff08;一&#xff09; 基础知识四个简单的爬虫案列1.使用urlopen获取百度首页并保存2.获取某翻译单词翻译候选结果3.获取某网页中的书名与价格4.获取某瓣排名前250的电影名称 基础知识 对于一个网页&#xff0c;浏览器右键可以查看页面源代码&#xff0c;…...

[python]uiautomation.WindowControl函数用法

Python UIAutomation 窗口控件 介绍 在本文中&#xff0c;我们将探讨Python UIAutomation库以及如何使用它来控制和自动化Windows应用程序。我们将介绍UIAutomation的基础知识及其功能&#xff0c;并提供代码示例来演示其用法。 什么是UI自动化&#xff1f; UIAutomation是一个…...

学习记录第二十七天

进程 wait函数 功能 等待子进程结束&#xff1a;父进程调用wait函数后&#xff0c;会暂停执行&#xff0c;直到它的某个子进程结束。收集子进程状态&#xff1a;当子进程结束时&#xff0c;wait函数会返回子进程的终止状态&#xff0c;包括是正常终止还是被信号终止等信息。…...

servlet的执行顺序

执行的时候Tomcat先初始化 然后调用 server 根据server来回调请求方式下面会追入源码解释 package com.haogu.servlet;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.…...

Go语言 类封装和绑定方法

本篇文章主要内容为Go语言类相关操作&#xff1a;封装和绑定方法介绍及示例。 目录 封装 绑定方法 类方法形参 指针形参 设置类方法参数 指针与非指针区别 总结 封装 go语言支持类的操作&#xff0c;但是没有class关键字&#xff0c;使用struct来模拟类。 示例如下&am…...

DirectShow过滤器开发-写WAV音频文件过滤器

下载本过滤器DLL 本过滤器将PCM音频流&#xff0c;或ADPCM&#xff0c;IEEE_FLOAT&#xff0c;ALAW&#xff0c;MULAW&#xff0c;GSM610音频流写入WAV音频文件。 写WAV音频文件过滤器信息 过滤器名称&#xff1a;写WAV 过滤器GUID&#xff1a;{CF704A9C-0C67-4712-BA33-DD0A…...

php根据截止时间计算剩余的时间,并且在剩余时间不足1天时仅显示小时数

//获取政策库文章public function getIndexZckList(){$fl_id = input(fl_id);if(empty(...

Docker最佳实践进阶(一):Dockerfile介绍使用

大家好,上一个系列我们使用docker安装了一系列的基础服务,但在实际开发过程中这样一个个的安装以及繁杂命令不仅仅浪费时间,更是容易遗忘,下面我们进行Docker的进阶教程,帮助我们更快速的部署和演示项目。 一、什么是Dockerfile? Dockerfile 是一个文本文件,其中包含了…...

Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术

人工智能咨询培训老师叶梓 转载标明出处 现实世界的视频捕获虽然因其真实性而宝贵&#xff0c;但常常受限于长尾分布的问题&#xff0c;即常见场景过度呈现&#xff0c;而关键的罕见场景却鲜有记录。这导致了所谓的"分布外问题"&#xff0c;在模拟复杂环境光线、几何…...

Spring 第四天:AOP 面向切面编程与声明式事务管理

前言 Spring 有两大核心&#xff1a;一个是前几天我们重点攻克的 IoC/DI&#xff0c;另一个就是今天要深入学习的 AOP&#xff08;面向切面编程&#xff09;。 还记得那句话吗&#xff1f;“AOP 是在不改变原有代码的前提下对其进行功能增强”。听起来很神奇对吧&#xff1f;今…...

AI助手自我进化框架:异步复盘与技能固化工程实践

1. 项目概述&#xff1a;一个让AI助手学会自我进化的“内功心法”如果你用过Claude、ChatGPT或者国内的一些大模型&#xff0c;肯定有过这样的体验&#xff1a;你跟它聊得挺好&#xff0c;让它帮你写个代码、分析个文档&#xff0c;它都能干。但聊着聊着&#xff0c;你发现它好…...

微博图文视频批量采集软件用户手册

目录 系统介绍 安装与配置 功能使用说明 常见问题 日志查看 系统介绍 本系统是一款微博内容采集与媒体处理工具&#xff0c;主要功能包括&#xff1a; 采集微博内容&#xff08;图文、视频&#xff09; 视频裁剪与去水印 AI标题优化 文件分类保存 自动抽帧 安装与配…...

构建更优Godot MCP:AI助手与游戏开发工作流深度集成方案

1. 项目概述&#xff1a;为什么我们需要一个更好的Godot MCP&#xff1f;如果你是一个长期使用Godot引擎的开发者&#xff0c;尤其是当你尝试将AI能力&#xff0c;比如大型语言模型&#xff08;LLM&#xff09;&#xff0c;集成到你的游戏开发工作流中时&#xff0c;你很可能听…...

如何快速部署Windows系统:MediaCreationTool.bat终极实战指南

如何快速部署Windows系统&#xff1a;MediaCreationTool.bat终极实战指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

Ruby 变量

Ruby 变量 引言 在编程语言中,变量是存储数据的基本单元。Ruby 作为一种动态、面向对象的语言,同样依赖变量来存储和处理数据。本文将详细介绍 Ruby 中的变量类型、作用域、生命周期以及相关操作,帮助读者全面了解 Ruby 变量的使用。 变量类型 Ruby 中的变量类型主要分为…...

TikTok评论采集终极指南:5分钟学会免费批量提取用户评论

TikTok评论采集终极指南&#xff1a;5分钟学会免费批量提取用户评论 【免费下载链接】TikTokCommentScraper 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokCommentScraper 想要快速获取TikTok视频下的所有用户评论进行数据分析&#xff1f;TikTokCommentScraper…...

【大白话说Java面试题 第43题】【JVM篇】第3题:GC分为哪两种?Young GC 和 Full GC有什么区别?

&#x1f4cc; PDF&#xff1a;大白话说Java面试题 — 02-JVM篇 第3题&#xff1a;GC分为哪两种&#xff1f;Young GC 和 Full GC有什么区别 &#x1f4da; 回答&#xff1a; 核心概念&#xff1a; JVM 的垃圾回收&#xff08;GC&#xff09;主要分为两种类型&#xff1a;You…...

大会证件/笔记本/开发板丢失怎么办?一线运维团队整理的7类高危物品应急响应SOP,含密钥擦除与隐私保护强制流程

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;奇点智能技术大会失物招领 在奇点智能技术大会现场&#xff0c;遗失物品高频出现在三个核心区域&#xff1a;主会场入口安检台、AI沙箱体验区休息椅、以及开源工作坊工位抽屉。为提升认领效率&#xff…...

SITS 2026议程背后隐藏的3条技术演进红线(附Gartner/IEEE双认证时间轴对比图)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;2026奇点智能技术大会完整议程曝光&#xff1a;SITS 2026四大看点抢先看 全球瞩目的奇点智能技术大会&#xff08;Singularity Intelligence Technology Summit, SITS&#xff09;将于2026年5月12–15日…...