【SSL 1974】鹊桥(DFS)

题目大意

据说银河是一个树形结构,共有 N N N 个星球,每到七夕时,喜鹊会在星球之间搭起桥,共有 N − 1 N−1 N1 座鹊桥。
牛郎和织女就会从两个不同的位置出发,沿着最短路相向而行,并在途中相会。
假设通过每一座鹊桥的时间都是相等的(通过星球的时间忽略不计),给出牛郎织女出发的位置,问他们相遇的地点是在星球上,还是在鹊桥上?

输入格式

第一行输入两个正整数 N , Q N,Q N,Q ,分别表示星球的数量和询问的数量。
之后 N − 1 N-1 N1 行,每行两个数 u , v u,v u,v ,表示星球 u , v u,v u,v 间有一座鹊桥。
之后 Q Q Q 行,每行两个数 c , d c,d c,d ,对应 Q Q Q 个询问中,牛郎与织女的起始位置。

输出格式

输出共 Q Q Q 行,对应 Q Q Q 个询问的答案,如果相遇在鹊桥上,输出 “ Y Y Y” ,否则输出" N N N" 。

输入样例

4 1
1 2
2 3
2 4
1 2

输出样例

Y

基本思路

我们首先思考什么时候相遇在鹊桥上,什么时候在星球上呢?十分简单,经过鹊桥为奇数时在鹊桥上,偶数时在星球上。

这么来看这应该是一个 L C A LCA LCA 问题,其实大可不必。我们需要的只是路径的奇偶性,所以我们可以处理每个点到根节点的长度相加模 2 2 2 即可,因为他们在通往根节点的公共路径是重合的,相加为偶数,模 2 2 2 后会被消掉

核心代码

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int N=1e5+10;
int n,q,dis[N],s,t;
vector<int>e[N];
inline void dfs(int p,int f){dis[p]=dis[f]+1;for(auto v:e[p]){if(v==f) continue;dfs(v,p);}
}
int main(){ios::sync_with_stdio(false);cin>>n>>q;for(int i=1,u,v;i<n;i++){cin>>u>>v;e[u].push_back(v);e[v].push_back(u);}dfs(1,0);while(q--){cin>>s>>t;if((dis[s]+dis[t])%2==0)cout<<"N"<<endl;elsecout<<"Y"<<endl; }return 0;
}

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

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

相关文章

机器人正反向运动学(FK和IK)

绕第一个顶点可以沿Z轴转动&#xff0c;角度用alpha表示 绕第二个点沿X轴转动&#xff0c;角度为Beta 第三个点沿X轴转动&#xff0c;记作gama 这三个点构成姿态&#xff08;pose&#xff09; 我们记第一个点为P0&#xff0c;画出它的本地坐标系&#xff0c;和世界坐标系一样红…

SpringCloud知识点梳理

1. Spring Cloud 综述 1.1 Spring Cloud 是什么 [百度百科]Spring Cloud是⼀系列框架的有序集合。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤ Spring Boot的开发⻛格…

(C语言)文件操作与函数,超详解

目录 1. 文件 1.1 为什么使用文件&#xff1f; 1.2 什么是文件&#xff1f; 1.2.1 程序文件 1.2.2 数据文件 1.3 文件名 1.4 二进制文件和文本文件 2. 文件的打开和关闭 2.1 流和标准流 2.1.1 流 2.1.2 标准流 2.2 文件指针 2.3 文件的打开和关闭 3. 文件的顺序…

更改 DeepXDE 的后端

DeepXDE 库为科学计算和工程优化等领域提供了深度学习方法&#xff0c;是一个非常有用的工具。其中一个重要的功能是它允许用户自定义后端。在本文中&#xff0c;我们将指导如何更改 DeepXDE 的后端&#xff0c;并且验证更改是否成功。 更改 DeepXDE 的后端 DeepXDE 支持多种…

Go Web 开发【Gin 框架快速开发】

1、Gin Web 快速开发 1.1、环境准备 1.1.1、导入 gin 依赖 这里就叫 gin 依赖了&#xff0c;在 Goland 命令行中输入下面的命令&#xff1a; go get -u github.com/gin-gonic/gin 1.1.2、设置代理 如果下载失败&#xff0c;最好设置一下代理&#xff0c;在 cmd 命令行中输…

深度学习论文:Local Feature Matching Using Deep Learning: A Survey

深度学习论文: Local Feature Matching Using Deep Learning: A Survey Local Feature Matching Using Deep Learning: A Survey PDF: https://arxiv.org/pdf/2401.17592 1 概述 近年来&#xff0c;深度学习模型的引入引发了对局部特征匹配技术的广泛探索。本文旨在全面概述局…

创建并管理Python虚拟环境:深入理解venv

引言 Python作为一门广泛应用于Web开发、数据分析、人工智能等领域的编程语言&#xff0c;其生态系统中的第三方库数量庞大且种类繁多。随着项目复杂度的增加&#xff0c;管理不同项目间的依赖关系变得尤为重要。venv&#xff0c;全称为Virtual Environment&#xff0c;是Pyth…

爬虫学习:基本网络请求库的使用

目录 一、urllib网络库 1.urlopen()方法 2.request方法 二、requests网络请求库 1.主要方法 2.requests.get()和requests.post() 一、urllib网络库 1.urlopen()方法 语法格式&#xff1a; urlopen(url,data,timeout,cafile,capath,context) # url:地址 # data:要提交的数据…

POWERBI==官网教程

地址 COVID-19 tracking sample for US state and local governments - Power BI | Microsoft Learn 已经非常全面了

JSON教程(非常详细)

参考文章来源&#xff1a;JSON教程&#xff08;非常详细&#xff09; 目录 JSON JSON 发展史 为什么要使用 JSON&#xff1f; JSON 的不足 存储格式 使用场景 1) 定义接口 2) 序列化 3) 生成 Token 4) 配置文件 JSON语法规则 JSON 与 JavaScript 对象的区别 JSON数…

解决Pycharm全局搜索与输入法简繁切换快捷键冲突问题

Pycharm中全局搜索快捷键Ctrl Shift F 如图所示&#xff1a; 微软输入法简繁切换快捷键设置&#xff1a; 解决办法&#xff1a; 关掉输入法的切换功能即可&#xff0c;或者更改简繁切换快捷键&#xff0c;毕竟简繁切换使用频率极低。

骑缝电子章怎么盖?

盖骑缝电子章通常涉及几个基本步骤&#xff0c;这里提供一个通用的流程&#xff0c;适用于大多数电子文档处理软件&#xff0c;尤其是那些支持电子签名和印章功能的软件&#xff0c;比如Adobe Acrobat Pro DC、e-章宝(易友EU3000智能盖章软件)等。请注意&#xff0c;具体操作可…

【经典算法】LeetCode 108. 将有序数组转换为二叉搜索树(Java/C/Python3/Go实现含注释说明,Easy)

目录 题目描述思路及实现方式一&#xff1a;递归中值法思路代码实现Java版本C语言版本Python3版本Golang版本 复杂度分析 方式二&#xff1a;迭代法思路代码实现Java实现Python实现C实现Go版本 复杂度分析总结 总结相似题目 标签(题目类型)&#xff1a;树&#xff0c;二叉搜索树…

2024年五一数学建模C题完整解题思路代码

2024年第二十一届五一数学建模竞赛题目 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而&#xff0c;随着开采深度的增加&#xff0c;地应力增大&#xff0c;井下煤岩动力灾害风险越来越大&#xff0c;严重影响着煤矿的安全高效开采。在各类深…

路由器的构成

一、路由器简介 路由器是互联网中的关键设备&#xff1a; 连接不同的网络路由器是多个输入端口和多个输出端口的专用计算机&#xff0c;其任务是转发分组&#xff08;转发给下一跳路由器&#xff09;下一跳路由器也按照这种方法处理分组&#xff0c;直到该分组到达终点为止 …

Python项目开发实战:如何基于Keras的深度学习来预测国际旅行人数

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:深度学习-基于Keras的Python项目开发实战_国际旅行人数预测_编程案例实例教程.pdf 在预测国际旅行人数这一问题上,我们可以利用深度学习技术,尤其是…

C++类和对象(下)(2)

一、友元 友元提供了一种突破封装的方式&#xff0c;有时提供了方便&#xff0c;但是友元会增加耦合度&#xff0c;破坏了封装&#xff0c;所以不建议经常使用友元。 友元分为&#xff1a; 友元函数和友元类。 1.1 友元函数 我们在尝试去重载operator<<时发现无法将op…

Pandas入门篇(二)-------Dataframe篇4(进阶)(Dataframe的进阶用法)(机器学习前置技术栈)

目录 概述一、复合索引&#xff08;一&#xff09;创建具有复合索引的 DataFrame1. 使用 set_index 方法&#xff1a;2.在创建 DataFrame 时直接指定索引&#xff1a; &#xff08;二&#xff09;使用复合索引进行数据选择和切片&#xff08;三&#xff09;重置索引&#xff08…

使用 Langchain、Langfuse、Nemo-gaurdrails、RAGAs构建 RAG 管道并进行监控和评估

原文地址:build-end-to-end-rag-pipeline-with-monitoring-and-evaluation-using-langchain-azure-ai-search 2024 年 4 月 21 日 介绍 使用现代的LLM框架,如Langchain或llamaindex,可以迅速搭建一个用于 RAG 的管道,通常只需编写大约5-6行代码。然而,若要构建一个适用于生…

【小浩算法 BST与其验证】

BST与其验证 前言我的思路思路一 中序遍历判断数组无重复递增思路二 递归边界最大值最小值的传递 我的代码测试用例1测试用例2 前言 BST是二叉树一个经典应用&#xff0c;我们常常将其用于数据的查找以及构建平衡二叉树等。今天我所做的题目是验证一颗二叉树是否为二叉搜索树&…