#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;
}
相关推荐
h_a_o777oah3 分钟前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
05候补工程师10 分钟前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
手写码匠1 小时前
Android 17 适配实战指南:新特性解读、隐私变更与迁移全攻略
人工智能·深度学习·算法·aigc
珊瑚里的鱼2 小时前
leetcode42雨水
算法·leetcode
水木流年追梦2 小时前
大模型入门-大模型的推理策略
开发语言·python·算法·正则表达式·prompt
生成论实验室2 小时前
用事件关系网络重新理解AI(三):激活函数、微调与元学习
人工智能·学习·算法·语言模型·可信计算技术
Narv工程师2 小时前
嵌入式机器人控制器算力评估:从DMIPS到WCET的完整指南
人工智能·算法·机器学习
蒟蒻的贤2 小时前
实训1227
算法
liulilittle2 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯
LCG元2 小时前
RAG - 大模型检索增强生成深度解析:本地知识库 / 企业级落地优化配置
人工智能·算法