G. SlavicG‘s Favorite Problem(树的遍历DFS,BFS均可)

news2024/11/26 18:52:13

Problem - G - Codeforces

给你一棵有n个顶点的加权树。回顾一下,树是一个没有任何循环的连接图。加权树是一棵树,其中每条边都有一定的权重。这棵树是无定向的,它没有根。

由于树让你感到厌烦,你决定挑战自己,在给定的树上玩一个游戏。

在一次移动中,你可以从一个节点移动到它的一个邻居(与它有直接边的另一个节点)。

当你通过边i时,x的值变为x XOR wi(其中wi是第i条边的权重)。

你的任务是从顶点a到顶点b,但你被允许进入节点b,当且仅当旅行到它之后,x的值将变成0。换句话说,你只能通过使用边i,使x XOR wi=0来旅行到节点b。

此外,你可以在任何时间点最多传送一次到任何顶点,除了顶点b。你可以从任何顶点传送,甚至从a点传送。

如果你能从a到达顶点b,则回答 "是",否则回答 "否"。

请注意,XOR代表位XOR操作。

输入
第一行包含一个整数t(1≤t≤1000)--测试案例的数量。

每个测试案例的第一行包含三个整数n、a和b(2≤n≤105),(1≤a,b≤n;a≠b)--分别是顶点的数量,以及起始节点和期望的结束节点。

接下来的n-1行中的每一行表示树的一条边。边缘i由三个整数ui、vi和wi表示--它连接的顶点的标签(1≤ui,vi≤n;ui≠vi;1≤wi≤109)和各自边缘的权重。

保证所有测试案例的n之和不超过105。

输出
对于每个测试案例,如果你能到达顶点b,则输出 "YES",否则输出 "NO"。

例子
输入复制
3
5 1 4
1 3 1
2 3 2
4 3 3
3 5 1
2 1 2
1 2 2
6 2 3
1 2 1
2 3 1
3 4 1
4 5 3
5 6 5
outputCopy

没有

注意
对于第一个测试案例,我们可以从节点1到节点3,x从0变成1,然后我们从节点3到节点2,x变成等于3。现在,我们可以传送到节点3,从节点3到节点4,到达节点b,因为x最后变成等于0,所以我们应该回答 "是"。

对于第二个测试案例,我们没有移动,因为我们不能传送到节点b,我们唯一的移动是前往节点2,这是不可能的,因为到达节点2时x不会等于0,所以我们应该回答 "不"。

题解:
我们必须搞清楚一点当你旅行到b后,x的值是必须为0的,也就是说走到b后就要停下了(很重要)

a可以通过传送达到除b外的任意一点,并且每经过一条路径就要做^操作,

我们不妨双向考虑,从起点与终点出发,如果a遍历到某一点的值,与b遍历到某一点的值相等,那么是不是可以让a直接传送到b遍历到的点,众所周知,两个相等的值^结果为0,最终到达b点的值也会为0

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<queue>
using namespace std;
vector<pair<int,int>> p[100050];
int n,a,b;
int f = 0;
int dis[100050];
int vis[100050];
int dis1[100050];
int vis1[100050];
map<int,int> rr,ll;
void bfs()
{
	queue<int> q;
	q.push(a);
	dis[a] = 0;
	while(q.size())
	{
		auto ver = q.front();
		q.pop();
		if(vis[ver])
		continue;
		vis[ver] = 1;
		for(int i = 0;i < p[ver].size();i++)
		{
			auto j = p[ver][i];
			int ne = j.first;
			int ww = j.second;
			if(!vis[ne])
			{
				if(ne != b)
				{
				dis[ne] = ww^dis[ver];
				q.push(ne);
				}
			}
		}
	}
}

void bfs1()
{
	queue<int> q;
	q.push(b);
	dis1[b] = 0;
	while(q.size())
	{
		auto ver = q.front();
		q.pop();
		if(vis1[ver])
		continue;
		vis1[ver] = 1;
		for(int i = 0;i < p[ver].size();i++)
		{
			auto j = p[ver][i];
			int ne = j.first;
			int ww = j.second;
			if(!vis1[ne])
			{
				dis1[ne] = ww^dis1[ver];
				rr[dis1[ne]] = 1;
				q.push(ne);
			}
		}
	}
}
void solve()
{
	f = 0;
	cin >> n >> a >>b;
	rr.clear();
	ll.clear();
	for(int i = 1;i <= n;i++)
	{
		p[i].clear();
		vis[i] = 0;
		dis[i] = 0;
		vis1[i] = 0;
		dis1[i] = 0;
	}
	for(int i = 1;i < n;i++)
	{
		int l,r,w;
		cin >> l>>r>>w;
		p[l].push_back({r,w});
		p[r].push_back({l,w});
	}
	bfs();
	bfs1();
	for(int i = 1;i <= n;i++)
	{
		if(rr[dis[i]])
		{
			cout<<"YES\n";
			return ;
		}
	}
	cout<<"NO\n";
}
signed main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
}

 

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

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

相关文章

java--Lambda (3)变量的访问与修改

文章目录0 写在前面1 可以直接在 Lambda 表达式中访问外层的局部变量2 在 Lambda 表达式当中被引用的变量的值不可以被更改3 在 Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量4 写在最后0 写在前面 学习使用在Lambda表达式&#xff0c;有些地方访问一些变…

VM系列振弦读数模块采集测量数据的一般步骤

VM 模块是通用型单振弦式传感器测量模块&#xff0c;主要功能是测量频率的传感器内置的温度传感器&#xff0c;使用默认工作参数即可自动测读绝大多数振弦传感器。 但由于传感器类型、结构、厂家、钢弦材料、线圈等影响因素不同&#xff0c;导致使用 VM 模块测量某些传感器时需…

【408专项篇】C语言笔记-第六章(指针)

文章目录第一节&#xff1a;指针的本质1. 指针的定义2. 取地址操作符与取值操作符第二节&#xff1a;指针的传递1. 指针的传递第三节&#xff1a;指针的偏移1. 指针的偏移2. 指针与一维数组第四节&#xff1a;动态指针与内存申请1. 指针与动态内存申请2. 堆空间和栈空间的差异第…

电脑无线网卡连接的无线信号不好的,经常丢包,掉线断网如何优化解决

环境&#xff1a; 电脑&#xff1a;HP480G7 系统:Win10 专业版 无线网卡&#xff1a;水星ud6s 、TP-LINK等 AP&#xff1a;锐捷RAP2200(E) 组网模式&#xff1a;AP代管AP模式 问题描述&#xff1a; 电脑无线网卡连接的无线信号不好的&#xff0c;经常断网&#xff0c;因…

docker logs命令详解

docker 命令官档如下&#xff1a; https://docs.docker.com/engine/reference/commandline/docker/ docker logs官档如下 https://docs.docker.com/engine/reference/commandline/logs/#retrieve-logs-until-a-specific-point-in-time 一、常用命令 1. 可以查看命令用法 doc…

英国访问学者|签证申请详细步骤简述

英国访问学者签证流程是怎么样的&#xff1f;下面就随知识人网老师一起来看一看英国访问学者签证申请详细步骤简述。 第1步&#xff1a;英国签证申请中心只接受在线填写的申请表&#xff0c;不接受手写表格。请访问官网完整填写申请表。(必须使用英文大写填写) 第2步&#xff…

数据库系统 整体结构化 的理解

数据库系统实现整体数据的结构化&#xff0c;这是数据库的主要特征之一&#xff0c;也是数据库系统与文件系统的本质区别。 在文件系统中&#xff0c;文件中的记录内部具有结构&#xff0c;但是记录的结构和记录之间的联系被固化在程序中&#xff0c;需要由程序员加以维…

jenkins配置maven+git自动构建jar包

进入页面 安装maven插件 需要使用maven插件构建项目,所以安装maven插件 步骤如下图&#xff1a; 点击安装后跳转至安装页面&#xff0c;等待在线安装完成即可 安装完成配置当前服务器中安装的maven 下滑到最下面点击新增maven 配置完成点击应用完成 配置当前服务器中安装的gi…

ADB 命令结合 Monkey 的使用

1、什么是monkey Monkey 是Android SDK提供的一个命令行工具&#xff0c;可以简单方便的发送伪随机的用户事件流&#xff0c;对Android APP做压力&#xff08;稳定性&#xff09;测试。主要是为了测试app是否存在无响应和崩溃的情况。 2、adb结合 monkey 的常用命令 adb shel…

如何选择跨平台桌面应用开发框架

受益于开源技术的发展&#xff0c;以及响应快速开发的实际业务需求&#xff0c;跨平台开发不仅限于移动端跨平台&#xff0c;桌面端虽然在市场应用方面场景不像移动端那么丰富&#xff0c;但也有市场的需求。 相对于个人开发者而言&#xff0c;跨平台框架的使用&#xff0c;主…

干货!一次伪静态页面的SQL注入!白帽黑客实战 。

涉及技能点 SQL注入基础原理 盲注常用函数及思路 burpsuite基础知识 过程记录 1.发现 在翻阅一EDU站点时&#xff0c;发现路径中带有明显的数字参数 好像与我们平时习惯的xxx.php?id不同呃 2.尝试注入 按照以往习惯&#xff0c;先用order by探探底&#xff0c;结果翻车了…

SPARKSQL3.0-PhysicalPlan物理阶段源码剖析

一、前言 阅读本节需要先掌握【SPARKSQL3.0-Optimizer阶段源码剖析】 本质&#xff1a;物理计划阶段将optimizer阶段优化后的逻辑算子树【LogicalPlan】进行进一步转换&#xff0c;生成物理算子树【SparkPlan】&#xff0c;物理算子树的节点可以直接生成 RDD 或对 RDD 进行 t…

javaweb 使用element + vue 完善项目 servlet 优化

我们先定义一个BaseServlet,继承HttpServlet 重写Service方法 &#xff08;因为HttpServlet就是在Service方法里做的通过请求方式进行方法分发&#xff0c;我们就重写改成通过请求路径分发&#xff09; 根据资源路径进行方法分发&#xff0c;利用反射得到调用者的class字节码文…

C++-指针:void*(不确定类型指针)简介【void *可以接受任何类型的赋值】【void *可以赋值给任何类型的变量】【void *不可以解引用】

void* 是一种特殊的指针类型&#xff0c;可用于存放任意对象的地址。一个 void* 指针存放着一个地址&#xff0c;这一点和其他指针类似。 void *可以接受任何类型的赋值&#xff0c;任何类型的指针都可以直接赋值给void *型指针&#xff0c;无需进行强制类型转换&#xff0c;相…

超大规模研究发现,缺乏维生素D,增加早逝风险

晒太阳是日常生活中最常见的一件事情了&#xff0c;但是很多人为了避免晒黑不喜欢晒太阳&#xff0c;更是把自己在夏天裹得严严实实&#xff0c;恨不得只露两只眼睛。其实每天晒太阳对身体有很多益处&#xff0c;杀菌消毒、促进维生素D的生成、促进血液循环和加速脂肪燃烧等。维…

IBM MQ 通道数量查看,以及最大通道数的修改

一&#xff0c;说明 在实践生产环境中&#xff0c;我们的运维人员很多时候都想关注通道使用了多少&#xff0c;离限定的对大通道数还有多少&#xff1f;下面我们就查看通道数量提供相应的办法。 二&#xff0c;示例 我有两个队列管理器&#xff0c;TEST_QM和 TEST_RQM&#…

C. Random Events(思维+概率)

Problem - 1461C - Codeforces 罗恩是一个长度为n的排列组合的快乐主人。 一个长度为n的排列组合是一个由1到n的n个不同的整数按任意顺序组成的阵列。例如&#xff0c;[2,3,1,5,4]是一个排列组合&#xff0c;但是[1,2,2]不是一个排列组合&#xff08;2在数组中出现了两次&…

动手学习深度学习

动手学习深度学习内容安排深度学习介绍内容安排 深度学习基础&#xff1a;线性神经网络、多层感知机卷积神经网络&#xff1a;LeNet、AlexNet、VGG、Inception、ResNet循环神经网络&#xff1a;RNN、GRU、LSTM、seq2seq注意力机制&#xff1a;Attention、Transformer优化算法&…

GPU是什么?GPU有多重要?

前段时间&#xff0c;MD和英伟达相继接到通知要对我国断供高端GPU芯片&#xff0c;很多人不知道GPU到底有什么用&#xff1f;下面IC修真院就带大家来一起了解一下GPU。 首先来了解一下GPU是什么&#xff1f; GPU–图形处理器&#xff08;Graphics Processing Unit&#xff09…

Assignment写作需要做好哪些练习?

有些澳洲留学小伙伴在被Assignment难住后往往会选择多练习来完成&#xff0c;那么如何顺利完成一篇Assignment的呢&#xff1f;小编就来为大家详解一番。 Some students studying in Australia often choose to practice more to complete assignments when they are baffled b…