#P12365. 相逢是首歌

Description

monkey A与monkey B住在一颗树上,每天他们都会相约一起出去玩。

q次询问,每次询问给两个点x和y,代表他们各自的出发点,他们以相同的速度,沿着二者的最短路前进. 问二者会在点上相遇,还是在边上相遇。

Format

Input

第一行给出N,Q 接下来N-1行,描述这个树 接下来Q行,每行给出x,y

N<=1e5

Q<=1e5

Output

如果在点上相遇输出Town,否则输出Road

Samples

输入数据 1

复制代码
4 1
1 2
2 3
2 4
1 2

Copy

输出数据 1

复制代码
Road

Copy

输入数据 2

复制代码
5 2
1 2
2 3
3 4
4 5
1 3
1 5

Copy

输出数据 2

复制代码
Town
Town

思路

我们可以把一棵树的深度分为奇数和偶数,然后查询时如果x和y深度奇偶性相同,则说明会在点上,否则说明在边上。具体可以看代码。


代码

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<int>vec[1000001];
int vis[10000001],n,q,x,y;
void dfs(int x,int dep,int fa)
{
	if(dep % 2 == 0) vis[x] = 1;
	else vis[x] = 2;
	for(int i = 0;i < vec[x].size();i++)
		if(vec[x][i] != fa)
			dfs(vec[x][i],dep + 1,x);
}
signed main()
{
	cin>>n>>q;
	for(int i = 1;i < n;i++)
	{
		cin>>x>>y;
		vec[x].push_back(y);
		vec[y].push_back(x);
	}
	dfs(1,0,0);
	while(q--)
	{
		cin>>x>>y;
		if(vis[x] == vis[y]) cout<<"Town"<<endl;
		else cout<<"Road"<<endl;
	}
  return 0;
}
相关推荐
xiaoye-duck5 分钟前
《算法题讲解指南:优选算法-队列+宽搜》--70.N叉树的层序遍历,71.二叉树的锯齿形层序遍历,72.二叉树的最大宽度,73.在每个树行中找最大值
数据结构·c++·算法·队列
汀、人工智能7 分钟前
[特殊字符] 第98课:数据流中位数
数据结构·算法·数据库架构··数据流·数据流中位数
Eloudy10 分钟前
不同特征值的特征向量互相正交的矩阵
人工智能·算法·机器学习
人道领域12 分钟前
【LeetCode刷题日记】:从 LeetCode 经典题看哈希表的场景化应用---数组、HashSet、HashMap 选型与算法实战
算法·leetcode·面试
努力努力再努力wz12 分钟前
【C++高阶系列】告别内查找局限:基于磁盘 I/O 视角的 B 树深度剖析与 C++ 泛型实现!(附B树实现源码)
java·linux·开发语言·数据结构·c++·b树·算法
承渊政道13 分钟前
【优选算法】(实战攻坚BFS之FloodFill、最短路径问题、多源BFS以及解决拓扑排序)
数据结构·c++·笔记·学习·算法·leetcode·宽度优先
kishu_iOS&AI15 分钟前
机器学习 —— 线性回归(2)
人工智能·python·算法·机器学习·线性回归
NULL指向我18 分钟前
信号处理学习笔记6:ADC采样线性处理实测拟合
人工智能·算法·机器学习
汽车仪器仪表相关领域21 分钟前
NHXJ-02汽车悬架检验台 实操型实战手册
人工智能·功能测试·测试工具·算法·安全·单元测试·可用性测试
源码之屋22 分钟前
计算机毕业设计:Python天气数据采集与可视化分析平台 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
人工智能·python·深度学习·算法·django·线性回归·课程设计