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

news2024/9/21 22:05:51

# 旅游规划

## 题目描述

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;
}

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

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

相关文章

【Android Git】Mac配置支持 Gitlab、Gitee和阿里云效多平台

前言 在开发过程中&#xff0c;会遇到多平台项目管理问题&#xff0c;需要进行配置支持&#xff0c;常用的平台有Gitlab、Gitee、阿里云效等&#xff0c;本篇文章记录下使用同一邮箱配置支持的过程。 说明 首先认识下id_ras,一个用于SSH&#xff08;安全外壳协议&#xff09;…

java判断字符串某字符是否为大写/小写/数字?

Character类提供了很多静态方法&#xff0c;用于处理Unicode字符&#xff0c;如下&#xff1a; 也可以将字符转化成小写字母或大写字母。运用如下&#xff1a; 1是数字返回true a不是大写返回false a是小写返回true a转化成大写字母后为A A转化成小写字母后为a

备战金三银四、金九银十、软件测试面试问答

1、问&#xff1a;你在测试中发现了一个bug&#xff0c;但是开发经理认为这不是一个bug&#xff0c;你应该怎样解决&#xff1f; 首先&#xff0c;将问题提交到缺陷管理库里面进行备案。 然后&#xff0c;要获取判断的依据和标准&#xff1a; 根据需求说明书、产品说明、设计…

压缩软件里的文件名编码

由于默认编码环境不同&#xff0c;打包时正常的文件和目录&#xff0c;在解包时就是乱码了。就拿winrar来说&#xff0c;windows中文版下&#xff0c;默认的编码是GBK 你将一堆文件打包给mac用户或者linux用户&#xff0c;那边的默认编码是UTF8&#xff0c;解压出来文件内容没有…

前端进阶——浏览器篇

浏览器如何工作&#xff08;一&#xff09;进程架构 浏览器的工作过程复杂而高效&#xff0c;其核心在于其进程架构的设计。以下是对浏览器进程架构的详细解析&#xff1a; 一、浏览器的主要进程 现代浏览器大多采用多进程多线程的架构&#xff0c;以Chrome浏览器为例&…

你会读财务报表吗?快来看看如何正确解读

在现代商业的复杂网络中&#xff0c;每一家公司都像是一个精密运行的钟表&#xff0c;其运转的顺畅程度取决于各个齿轮的完美契合与精准配合。而财务报表&#xff0c;就像是是这钟表的指针&#xff0c;实时展现着公司运转的状态和效率&#xff0c;帮助管理者把握全局&#xff0…

用python实现视频中插入各种形式的文本,包括普通文本、数学公式、项目符号列表和标题

tex_mobject 模块提供了一系列可以使用 LaTeX 渲染文本的类。通过这个模块&#xff0c;你能够在视频中插入各种形式的文本&#xff0c;包括普通文本、数学公式、项目符号列表和标题等。具体类的功能如下&#xff1a; BulletedList&#xff1a;用于创建带项目符号的列表。MathT…

关于utf-8编码规范练习题

目录 一、代码内容 二、MySQL内容 三、代码遇到的问题 遭遇&#xff1a; 解决思路&#xff1a; 四、出现问题1 断点调试&#xff0c;分析问题 发现问题点&#xff1a; 问题解决 五、出现问题2 原因&#xff1a; 举例&#xff1a; 举例总结&#xff1a; 一、代码内容…

数学建模--浅谈多波束测线问题

目录 1.问题说明 2.问题分析 3.代码分析 1.问题说明 这个是国赛的真题&#xff0c;我们这个里面只是浅谈&#xff0c;就是对于这个里面运用的过程仿真的思路进行说明&#xff0c;这个探测的波束问题实际上也是一个简单的过程仿真问题&#xff0c;也是需要去进行作图的&#…

游戏管理系统

目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 &#xff08;1&#xff09;用户及管理员登录流程图 &#xff08;2&#xff09;信息添加流程 &#x…

Java语言程序设计——篇十三(3)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

virtual_host.hpp模块

目录 一.VirtualHost虚拟机模块介绍 二.VirtualHost的实现 1. 类概述 2. 交换机操作 3. 队列操作 4. 绑定操作 5. 消息操作 6. 清理操作 总结 三.全部代码 一.VirtualHost虚拟机模块介绍 虚拟机是对之前几个数据管理模块的整合&#xff0c;并封装了之前的一些操作。…

安装Jmeter,配置jdk

注意点: java的jdk和jmeter的版本相匹配 ! ! ! 目前我使用的是1.8的的,jmeter使用的是5.6.3 JDK下载地址&#xff1a;https://www.oracle.com/cn/java/technologies/downloads 别管,直接傻瓜式安装点点就完了... 1.电脑-属性-高级系统设置-环境变量 2.系统变量-新建-变量…

如何理解:进程控制

文章目录 前言&#xff1a;进程创建&#xff1a;进程终止&#xff1a;如何终止进程&#xff1f;进程等待非阻塞等待&#xff1a; 总结&#xff1a; 前言&#xff1a; ​ 对于前面的地址空间的学习&#xff0c;我们现在了解到原来所谓变量的地址其实是虚拟地址&#xff0c;该虚…

python管理mysql(实现读写分离)及如何用Mycat读写分离

Day24 编写python代码实现读写分离 1、安装pymysql&#xff0c;它是python管理mysql的驱动&#xff0c;或者称为连接器 [rootpyhton ~]#pip3 config set global.index-url Simple Index [rootpython ~]# pip3 install pymysql #安装pymysql [rootpyhton ~]# python3 …

【C++】什么是内存管理?

如果有不懂的地方&#xff0c;可以看我以往文章哦&#xff01; 个人主页&#xff1a;CSDN_小八哥向前冲 所属专栏&#xff1a;C入门 目录 C/C内存分布 C内存管理方式 new/delete操作内置类型 new/delete操作自定义类型 operator new与operator delete函数 new和delete实现…

【秋招笔试】24-08-10-OPPO-秋招笔试题(第二套)

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

2024巴黎奥运会VIS视觉设计分享学习

2024年巴黎奥运会的视觉识别系统&#xff08;VIS&#xff09;以其独特的设计和创意&#xff0c;展现了法国的优雅与活力。该设计融合了现代感与传统元素&#xff0c;以巴黎标志性的建筑和文化为灵感&#xff0c;创造出一系列令人印象深刻的视觉符号。 色彩上&#xff0c;采用了…

SpringCloud网关

1.网关的作用 2.网关入门 2.1引入依赖 <dependencies><dependency><groupId>com.heima</groupId><artifactId>hm-common</artifactId><version>1.0.0</version></dependency><!--网关--><dependency><g…

【qt】基于tcp的客户端搭建

ui界面设计 我们给客户端提供服务器的ip地址&#xff0c;以及服务器的端口号 1.界面设计 2.修改对象名称 代码实现 断开按键的槽函数处理 转到槽&#xff0c;然后实现槽函数&#xff0c;直接关闭该窗口&#xff0c;就可以了 连接槽函数编写&#xff0c;首先要支持网络通信…