D - Collision

题目描述:

给一颗树,q次询问,每次询问给两个点xy,两个点上放两个人以相同的速度,沿着二者的最短路前进,问二者会在点上相遇,还是在边上相遇

思路:

不难发现,对于任意两个点xy,如果二者在树上的最短距离是奇数,则在边上相遇,否则在点上相遇

树上最短距离可以用lca求,但是这里没必要这么求,我们只需要知道二者距离的奇偶性即可,那我们可以对整个图进行黑白染色,如果颜色相同,则是在点上相遇,否则是在边上相遇

#include <bits/stdc++.h>
using namespace std;#define endl '\n'
#define inf 0x3f3f3f3f
#define mod7 1000000007
#define mod9 998244353
#define m_p(a,b) make_pair(a, b)
#define mem(a,b) memset((a),(b),sizeof(a))
#define io ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define debug(a) cout << "Debuging...|" << #a << ": " << a << "\n";
typedef long long ll;
typedef pair <int,int> pii;#define MAX 300000 + 50
int n, m, k, x;
vector<int>G[MAX];
int col[MAX];
void dfs(int u, int op){col[u] = op;for(auto v : G[u]){if(col[v] == -1)dfs(v, op ^ 1);}
}
void work(){cin >> n >> m;for(int i = 1, a, b; i < n; ++i){cin >> a >> b;G[a].push_back(b);G[b].push_back(a);}mem(col, -1);dfs(1, 0);for(int i = 1, a, b; i <= m; ++i){cin >> a >> b;if(col[a] != col[b])cout << "Road\n";else cout << "Town\n";}
}int main(){io;work();return 0;
}

AtCoder Beginner Contest 209 D - Collision「黑白染色」相关推荐

  1. AtCoder Beginner Contest 272「A」「B」「C」「D bfs」「E 思维」

    AtCoder Beginner Contest 272 A - Integer Sum 题目描述: 输入n个数字,求数字和 #include <bits/stdc++.h> using ...

  2. freee Programming Contest 2022(AtCoder Beginner Contest 264)A~D题详细讲解

    目录 博主赛情 网站链接 比赛简介 Contest Information Reason why freee needs AtCoder users freee's business content ...

  3. AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...

  4. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  5. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  6. AtCoder Beginner Contest 215 G - Colorful Candies 2

    AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...

  7. AtCoder Beginner Contest 215 F - Dist Max 2

    AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x ...

  8. AtCoder Beginner Contest 215 E - Chain Contestant

    AtCoder Beginner Contest 215 E - Chain Contestant 给出一个只包括A~J的字符串,定义一种子序列为:在这个子序列中,相同的字符必定连续出现,求出这样的子 ...

  9. AtCoder Beginner Contest 204 F Hanjo 2

    AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...

最新文章

  1. transport=websocket' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
  2. linux 命令02
  3. python多线程执行_python多线程实现同时执行两个while循环
  4. What's the difference between markForCheck() and detectChanges()
  5. 协程asyncio_Asyncio深入浅出
  6. 错误Read timed out.
  7. centOS下lnamp安装
  8. android sdk 64 linux下载,64位Linux机器上的Android SDK
  9. 深度剖析 | 初学者应该如何学习前端?该怎么学?
  10. powershell如何ping
  11. Leetcode每日一题:38.Count and Say(外观数列)
  12. 物权法全文内容有哪些呢-广告外链_SEO优化的站外优化工作有哪些?
  13. 单页面登录——编码传参(oa会对#号会进行截断)
  14. 视频教程-2020年上半年 软考 系统分析师 论文真题讲解-软考
  15. 『Others』WPS广告关闭
  16. Mac常用快捷键组合
  17. 宽带拨号上服务器无响应,宽带拨号服务器无响应(图文)
  18. 分布式计算,网格计算和云计算的异同
  19. 414.Fizz Buzz
  20. python--手机步数----微信运动--支付宝运动等步数刷新

热门文章

  1. Oracle 自动存储管理 (ASM)
  2. DD虚拟按键驱动免费下载
  3. 门多萨与马尔克斯谈话录
  4. spark xgboost 特征重要性分析 gain、cover、freq
  5. 全球投资者聚焦阿里巴巴新零售:天猫力量定义商业未来
  6. MINI-UI V3.0 开发框架 非常容易上手
  7. 截图或者模糊图片高清处理方式
  8. VScode 的 code snippet 中可以使用的一些变量(时间,日期等)
  9. python字符串去除头尾_python 如何去除字符串头尾的多余符号
  10. 吉林大学考研计算机系分数线,吉林大学考研计算机分数线相关交流问答贴 小木虫论坛-学术科研互动平台...