F1. 生活在树上(easy version)树,dfs

news2025/1/21 10:13:27

题目链接

F1. 生活在树上(easy version)

题目背景

本题是 B 组的最后一题,是 F2 题的简单版本,两道题目的解法略有不同。本题和 F2 题在题意上的区别在于本题给定树上的边权,而不是点权。

小智生活在「传智国」,这是一个有 n n n 个城市的国家,各个城市由 n − 1 n-1 n1 条道路相连。

每个道路都有长度 w i w_i wi ,我们定义,小智从城市 a a a 走到城市 b b b 的代价是 d i s a , b = ⨁ e ∈ p a t h ( a , b ) w e \mathrm{dis}_{a, b} = \bigoplus \limits_{e \in \mathrm{path}\left(a, b\right)} w_e disa,b=epath(a,b)we,其中 ⨁ \bigoplus 表示按位异或(如果你不知道什么是按位异或,请参见题目下方的提示/说明), p a t h ( a , b ) \mathrm{path}\left(a,b\right) path(a,b) 表示 a a a b b b 的简单路径上的边集。也即 d i s a , b \mathrm{dis}_{a, b} disa,b 表示将 a a a b b b 的简单路径上所有边写作 e 1 , e 2 , e 3 , … e_1, e_2, e_3, \dots e1,e2,e3, 后,求 w e 1 ⨁ w e 2 ⨁ w e 3 … w_{e_1} \bigoplus w_{e_2}\bigoplus w_{e_3} \dots we1we2we3 的结果。

有一天,小智获得了去参加传智杯的机会,他在前往比赛地的路上想到了一个问题,但他好像不会做,于是他把这个题告诉了你。聪明的同学,你可以帮帮他吗?

题目描述

小智说:「由于我们的国家只有 n n n 个城市和 n − 1 n-1 n1 条道路,那么我们的国家就相当于是一棵树。我在想,在我们的国家中,是否有城市满足『到城市 a a a 的代价和到城市 b b b 的代价的异或等于 k k k』。好难哦,我想不出来,你能帮帮我吗?」

形式化的,给定城市 a , b a, b a,b 和整数 k k k,请你计算有哪几个城市 t t t 满足 d i s t , a ⨁ d i s t , b = k \mathrm{dis}_{t, a} \bigoplus \mathrm{dis}_{t, b} = k dist,adist,b=k

输入格式

第一行有两个整数 n n n m m m,表示国家的城市数和询问的个数。

接下来 n − 1 n-1 n1 行,每行有两个整数 x , y , l x, y, l x,y,l,表示城市 x x x 与城市 y y y 有一条长度为 l l l 的边。

接下来 m m m 行,每行有三个整数 a , b , k a, b, k a,b,k,表示小智从城市 a a a 走到城市 b b b k k k 的含义与题目描述一致。

输出格式

m m m 行,每行一个整数。

对于第 i i i 个询问,如果存在至少一个城市 t t t 满足要求,则输出 Yes

如果不存在任何一个城市满足条件,则输出 No

输出字符串大小写不敏感,例如,YesyESYESyes 等都算作 Yes

样例 #1

样例输入 #1

5 3
1 2 2
1 3 6 
2 4 8
2 5 1
1 2 4
2 3 12
1 4 10

样例输出 #1

nO
No
YeS

样例 #2

样例输入 #2

5 10
2 1 63
3 1 57
4 2 2
5 2 84
5 2 84
4 1 9977404983223574764
2 5 84
2 1 15996060349666123522
5 4 86
3 1 8428615422876116375
5 1 107
2 3 6
2 3 6
4 2 2

样例输出 #2

yeS
nO
YEs
No
YEs
nO
YEs
yeS
yeS
YEs

提示

相关概念解释

「树」:树是一个有 n n n 个结点和 n − 1 n-1 n1 条边的无向简单连通图。

「按位异或」:按位异或即 C++、python、java 语言中的 「^」 运算。它是一个二元运算,步骤是将两个数的二进制位按位比较,相同为 0 0 0,不同为 1 1 1。例如: 3 ⨁ 5 = ( 011 ) 2 ⨁ ( 101 ) 2 = ( 110 ) 2 = 6 3 \bigoplus 5 = (011)_2 \bigoplus (101)_2 = (110)_2 = 6 35=(011)2(101)2=(110)2=6请注意,这是一个按位运算,不是一个逻辑运算

样例 1 解释

下图为传智国的地图。

∀ t ∈ { 1 , 2 , 3 , 4 , 5 } \forall t \in \{1, 2, 3, 4, 5\} t{1,2,3,4,5},都不可能有 d i s t , 1 ⨁ d i s t , 2 = 4 \mathrm{dis} _{t,1} \bigoplus \mathrm{dis}_{t, 2} = 4 dist,1dist,2=4 d i s t , 2 ⨁ d i s t , 3 = 12 \mathrm{dis}_{t, 2} \bigoplus \mathrm{dis}_{t, 3} = 12 dist,2dist,3=12,于是输出 No

而取 t = 5 t = 5 t=5,有 d i s t , 1 ⨁ d i s t , 4 = 10 \mathrm{dis}_{t, 1} \bigoplus \mathrm{dis}_{t, 4} = 10 dist,1dist,4=10,于是输出 Yes

数据规模与约定

对于所有测试点,保证 1 < n ≤ 5 × 1 0 5 1 < n \leq 5 \times 10^5 1<n5×105 1 ≤ m ≤ 5 × 1 0 5 1 \leq m \leq 5 \times 10^5 1m5×105 0 ≤ w i < 2 64 0 \leq w_i < 2^{64} 0wi<264

对于每次询问,保证 1 ≤ a , b ≤ n 1 \leq a,b \leq n 1a,bn a ≠ b a \neq b a=b 0 ≤ k < 2 64 0 \leq k < 2^{64} 0k<264
思路:
首先需要明确的是和异或的特点,两个相同的数异或的结果为0,任何数异或0之后的仍旧是它本身。所以这道题目,需要注意的就是树的存储方式。只要能选中任何一个点作为起点,计算完到其他n-1个点的异或的结果,就能知道是否满足给定的条件。
代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=5e5+11;
#define ll unsigned long long 
int n,m;
ll dis[maxn];
bool flag[maxn];
struct edge
{
	int to;
	ll v;
};
vector<edge> e[maxn];
void dfs(int x)
{
	
	for(int i=0;i<e[x].size();i++)
	{
		ll y=e[x][i].to,z=e[x][i].v;
		if(flag[y]) continue;
		dis[y]=dis[x]^z;
		flag[y]=1;
		dfs(y);
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<n;i++)
	{
		int x,y;
		ll z;
		scanf("%d%d%llu",&x,&y,&z);
		e[x].push_back({y,z});
		e[y].push_back({x,z});
	}
	flag[1]=1;
	dfs(1);
	//for(int i=1;i<=n;i++) cout<<"i="<<i<<" "<<"dis[i]="<<dis[i]<<endl;
	for(int i=1;i<=m;i++)
	{
		int a,b;
		ll k;
		scanf("%d%d%llu",&a,&b,&k);
		//cout<<"dis[a]^dis[b="<<(dis[a]^dis[b])<<endl;
		if((dis[a]^dis[b])==k) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

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

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

相关文章

汽车 Automotive > SOME/IP VS DDS调研和未来方向

参考&#xff1a;JASPAR, General incorporated association&#xff1a;What is the conqueror in the SOA platform for the future in-vehicle networks? 目录 SOME/IP介绍参考 DDS介绍 SOME/IP VS DDS 研究方向 SOME/IP介绍参考 汽车Automotive &#xff1e; SOME/…

MAC安全(防MAC泛洪攻击)

一、MAC地址表项分类&#xff1a; 1.1 动态表项&#xff1a;通过对帧内的源MAC进行学习而来&#xff0c;有老化时间 1.2 静态表项&#xff1a;由管理员手工配置&#xff0c;不会老化 1.3 黑洞表项&#xff1a;丢弃特定源MAC或目的MAC,不会老化 静态和黑洞表项不会被动态表项…

类与对象(下篇)

类与对象&#xff08;下&#xff09;再谈构造函数回顾构造函数初始化列表explicit 关键字拷贝构造函数也具有初始化列表友元 friend友元函数输入输出流的重载友元类static 成员内部类再谈构造函数 回顾构造函数 在上一篇博客中提到了构造函数&#xff0c;构造函数其主要目的是…

类与对象(中篇)

类中六个默认成员函数构造函数基本概念构造函数特性析构函数基本概念析构函数特性拷贝构造函数基本概念拷贝构造函数特性赋值运算符重载概念引入运算符重载函数的特性部分运算符的重载函数判等赋值前置 、前置--后置、后置--const 成员函数取地址只要生成一个类 &#xff0c;那…

iOS_Custom Transition Animation 自定义转场动画

文章目录1、push-pop 动画协议2、present-dismiss 动画协议3、实现转场动画协议3.1 动画时长3.2 push or present animation (显示动画)3.3 动画结束3.4 pop or dismiss animation (消失动画)4、UIPresentationController4.1 设置presentVC的frame4.2 present 动画4.3 dismiss …

Docker快速安装Oracle 12c

【Oracle系列3】Docker快速安装Oracle 12c 背景 现在还很多企业用12c&#xff0c;以这个版本为例&#xff0c;介绍docker快速启动Oracle并做实验 步骤 1、docker环境的安装&#xff08;略&#xff09; 2、查询镜像&#xff0c;挑选镜像 docker search oracle结果 StoneM…

阿里P8架构师都在学习参考的SpringCloud微服务实战文档

我一直在使用Spring Boot、Spring Data等框架来进行开发工作。 作为一名Spring系列的忠实粉丝&#xff0c;我自然希望能够有更多的开发者参与进来&#xff0c;于是自己坚持写Spring Cloud相关的文章&#xff0c;并且将文章涉及的代码整理后放在GitHub上分享。 这使我得到了很…

【Hack The Box】Linux练习-- Luanne

HTB 学习笔记 【Hack The Box】Linux练习-- Luanne &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月24日&#x1f334; &#x1f3…

零基础搭建基于知识图谱的电影问答系统

零基础搭建基于知识图谱的电影问答系统一、项目准备二、项目数据三、训练问题分类器四、准备问答模板五、搭建webapp六、问题预处理一、项目准备 首先需要一款python编译器&#xff0c;本人选用的是PyCharm&#xff0c;搭建好Python环境&#xff1b;安装第三方依赖库&#xff…

【Hack The Box】linux练习-- Delivery

HTB 学习笔记 【Hack The Box】linux练习-- Delivery &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1…

黄佳《零基础学机器学习》chap1笔记

黄佳 《零基础学机器学习》 chap1笔记 这本书实在是让我眼前一亮&#xff01;&#xff01;&#xff01; 感觉写的真的太棒了&#xff01; 文章目录黄佳 《零基础学机器学习》 chap1笔记第1课 机器学习快速上手路径—— 唯有实战1.1 机器学习族谱1.2 云环境入门实践&#xff1a;…

ERD Online 4.0.4 元数据在线建模(免费、私有部署)

❝ fix(erd): 修改表名、模块名自定义提示fix(erd): 支持自定义表名显示格式fix(erd): 升级ant到5.0.1版本fix(erd): 修复PDMan导入类型列为空fix(erd): 增加类型列宽度&#xff0c;避免类型显示不全fix(erd): 修复表设计报undefine异常fix(erd): 修复版本比对&#xff0c;出现…

二分搜索算法框架解析

文章目录 一、寻找一个数&#xff08;基本的二分搜索&#xff09;二、寻找左侧边界的二分搜索三、寻找右侧边界的二分查找总结 一、寻找一个数&#xff08;基本的二分搜索&#xff09; 这个场景是最简单的&#xff0c;可能也是大家最熟悉的&#xff0c;即搜索一个数&#xf…

2023年天津财经大学珠江学院专升本经济学专业课考试大纲

天津财经大学珠江学院2023年高职升本科专业课考试《经济学》考试大纲一、本大纲系天津财经大学珠江学院2023年高职升本科《经济学》课程考试大纲。所列考试范围出自郑健壮、王培才主编的教材《经济学基础&#xff08;第二版&#xff09;》&#xff0c;清华大学出版社&#xff0…

win10通过Docker搭建LNMP环境全流程

win10通过Docker搭建LNMP环境全流程 下载安装docker desktop 由于博主环境已经安装好了&#xff0c;一些异常设置&#xff0c;暂且略过 根据官方教程下载docker desktop执行文件.exe 注意尽量不要把docker安装到C盘&#xff0c;除非你的C盘很大&#xff0c;具体可以参考文章 …

初识 Spring 框架

文章目录一、Spring 介绍二、Spring 下载安装三、编写入门程序1.项目文件构架2.引入相关依赖3.创建实体类4.Spring 配置文件5.编写测试类四、控制反转与依赖注入1.控制反转概念2.依赖注入概念3.依赖注入的类型4.依赖注入的应用一、Spring 介绍 Spring 是由 Rod Johnson 组织和…

计算机毕设题目设计与实现(论文+源码)_kaic

毕业设计(论文)题目 高校图书馆座位预约选座微信小程序设计与实现 基于防火墙的访问控制系统的设计与实现 基于区块链的农产品追溯系统设计与实现 学生公寓楼改造布线系统规划与设计 智能家居网络设计与实现“互联网”农村精准扶贫共享平台的设计与实现“智慧健康少儿成长平台”…

Linux内核——门相关入门知识

为什么20位的寻址可以达到1MB&#xff1f; &#x1f512; 点击查看答案 &#x1f512; 拆分如下的段描述符&#xff1a; 0000000000000000 00cf9b000000ffff 00cf93000000ffff 00cffb000000ffff 00cff3000000ffff 80008b04200020ab ffc093dff0000001 0040f30000000fff 0000f20…

TypeScript开启

TypeScript是什么&#xff1f; typescript是以JavaScript为基础构建的语言&#xff0c;是一个Javascript的超集&#xff0c;可以在任何支持JavaScript的平台中执行&#xff0c;typescript扩展了JavaScript&#xff0c;并添加了类型。 注意&#xff1a;ts不能被js直接解析执行&…

MySQL的join你真的了解吗!!!

1.测试用例数据库信息 本文章采用的数据库结构&#xff0c;以及MySQL版本&#xff1a;5.7 t1 表&#xff0c;有一个主键id&#xff0c;字段a&#xff0c;字段b。 &#xff08;此表建立了一个索引a&#xff09; 数据大约1000条 t2 表&#xff0c;有一个主键id&#xff0c;字段…