题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1023 http://poj.org/problem?id=3567 因为lyd在讲课,所以有了lyd的模板.感觉人家写得好好呀!于是学习(抄)了一下.可以记一记. 反正各种优美.那个dp断环成链的地方那么流畅自然!tarjan里的那些 if 条件那么美! 不过十分不明白为什么边要开成4倍的.开成2倍的真的会RE.怎么分析仙人掌的边数? #include<iostream> #includ…
题意 裸的仙人掌直径. 题解 先考虑基环树的直径:先算出每颗“树”的直径,再在环上跑DP 再考虑仙人掌的直径:把每个基环树缩成一条边,边长为基环树深度. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; ; ; int cnt,head[N]; ],dp[N],q[N*],an…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1023    http://poj.org/problem?id=3567 仙人掌!直接模仿 lyd 的代码: 大概就是 tarjan 找环 + 单调队列优化 dp,然后缩环成链继续递归: 直接模仿着写的,感觉好妙啊: 不太明白边为什么要开成点数的4倍. 代码如下: #include<iostream> #include<cstdio> #include<cstring&…
树的直径:树上的最长简单路径. 求解的方法是bfs或者dfs.先找任意一点,bfs或者dfs找出离他最远的那个点,那么这个点一定是该树直径的一个端点,记录下该端点,继续bfs或者dfs出来离他最远的一个点,那么这两个点就是他的直径的短点,距离就是路径长度.具体证明见http://www.cnblogs.com/wuyiqi/archive/2012/04/08/2437424.html 其实这个自己画画图也能理解. POJ 1985 题意:直接让求最长路径. 可以用dfs也可以用bfs bfs代…
G++一直没有过了 换成 C++果断A掉了...It's time to bet RP. 题意:给一个多边形,然后放进去两个圆,让两个圆的覆盖面积尽量最大,输出两个圆心的坐标. 思路:将多边形的边向里平移圆的的半径R,然后求新多边形的距离最长的两个点. 平移多少废了一点脑筋,其他的就都是现成的模板了. 这个是平移的函数,自己想得,不知道还有没有更简便的.左右平移只需要改一下 向量 V void Panning_Edge(P &a1,P &a2,double dis) { //向v的右侧平移…
<题目链接> <转载于 >>> > 题目大意: 给你一个图,让你判断他是不是仙人掌图. 仙人掌图的条件是: 1.是强连通图. 2.每条边在仙人掌图中只属于一个强连通分量.仙人掌图pdf说明>>> 解题分析: 1.首先得先熟练掌握tarjan算法的应用. 2.必须了解仙人掌图的三个性质: (1).仙人掌dfs图中不能有横向边,简单的理解为每个点只能出现在一个强联通分量中. (2).low[v]<dfn[u],其中u为v的父节点 (3).a[u…
http://acm.hdu.edu.cn/showproblem.php?pid=3594 题意: 一个有向图,判断是否强连通和每条边只在一个环中. 思路: 仙人掌问题. 用Tarjan算法判断强连通分量的时候,记录每节结点的父节点.当找到一个环后,回溯将该环上的所有结点+1,如果有结点出现2次了,则说明不是仙人掌了. #include<iostream> #include<algorithm> #include<cstring> #include<cstdio…
Cow Marathon Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 7536   Accepted: 3559 Case Time Limit: 1000MS Description After hearing about the epidemic of obesity in the USA, Farmer John wants his cows to get more exercise, so he has com…
题目大意: 给你一个仙人掌,求图中相距最远的点对之间的距离. 思路: Tarjan+DP. 我们先考虑一个树的情况. 设用far[u]表示点u出发到其子树中叶子节点的最大距离,若v为u的子结点,很显然far[u]=max{far[v]}+1. 而对于经过点u的简单路径,最长的一条肯定是max{far[v]+far[w]+2},且u≠w. 很显然我们只需要DFS一遍,然后随便转移即可. 考虑一下仙人掌和树有什么不同. 很显然仙人掌就是在一棵树上加了几条边,使得图中出现了一些环,而且不会有边同时出现…
Cow Marathon Description After hearing about the epidemic of obesity in the USA, Farmer John wants his cows to get more exercise, so he has committed to create a bovine marathon for his cows to run. The marathon route will include a pair of farms and…