CF832D】的更多相关文章

有一棵n个节点的树,一共q 次询问 每次询问给定3个点,求两条起点终点在这三个点上且不完全重合的路径的最多公共节点数 简单LCA求距离,令a为汇合点,那么答案就是(dis(a,b) + dis(a,c) - dis(b,c)) / 2 + 1,dis用lca求出,枚举a就好. 当然也可以一一讨论abc的位置关系,不过容易出错. #include<queue> #include<cstdio> #include<iostream> #include<algorith…
题目链接:http://codeforces.com/contest/832/problem/D 题目大意:在一个无向图上,给出三个点,以其中一个点为终点,另外两个点为起点,请问如何安排起点和终点可以使得从两个起点走最短路到终点所共同经过的路径的长度最长? 解题思路:任取一个点作为根建立一棵树(为什么可以建成一棵树?它不会有环吗?请看题目中的这一句:“The underground has n stations connected with n - 1 routes so that each r…
题目传送门 Description 给定一棵树上的三个点 \(a,b,c\),你要制定两条起点和终点都在这三个点中的路径,使得两条路径重叠的节点最多. Solution 感觉我的方法和大众不同,显然是珂以Hack的 考虑分类讨论,分三类: \(a\) 点在这两条路径的起止点中出现 \(2\) 次. \(b\) 点在这两条路径的起止点中出现 \(2\) 次. \(c\) 点在这两条路径的起止点中出现 \(2\) 次. 下面只分析一类,即 \(a\) 出现两次(其实都一样的). 如图,这时 \(\o…