图论
Goodbye_yesterday
湖北大学计科18级
展开
-
拓扑排序
有n个变量,m个二元组(u,v),分别表示u<v,要求你给这n个变量排序,把每个变量看成一个点,"小于"关系看成有向边,则得到一个有向图。如果图中存在有向环,则不存在拓扑排序,反之则存在。在访问完一个节点后把它加到拓扑排序的首部,因为有向图箭头所指的方向变量比较小,所以按从小到大输出的时候它应该在前面。 bool dfs(int u) { c[u]=-1; for(int v=0;v...原创 2019-01-18 10:22:12 · 213 阅读 · 0 评论 -
欧拉回路
欧拉回路的问题用程序语言来描述就是能否从一个无向图中的一个节点出发走出一条道路,每条边恰好经过一次。 不难发现在欧拉道路中,进和出是相对应的概念。除了终点和起点,其他的度数应该也是偶数。即终点和起点的度为奇数时,该无向图存在欧拉道路,且道路为从一个奇点出发到达另一个奇点,如果不存在奇点,则可以从任意点出发,最终一定会回到该点(称为欧拉回路) 。有向图的结论类似,最多只能有两个点的入度不等于出度...原创 2019-01-18 17:06:16 · 223 阅读 · 0 评论 -
UVA12171
题目大意: 给你一些长方体的坐标,算他们的体积(包括被围起来的体积),面积就是外表面的面积。就想象成将这些长方体放进水里,在水占的体积和水接触的表面积。 分析: 最原始的想法就是按坐标bfs,可以找出体积和表面积,但这一题的数组却开不下 500*500*500已经超过一亿了,办法就是离散化。 怎么离散化呢?因为只有50个长方体,所以最多有100个坐标 100*100*100 100万可以接...原创 2019-01-24 16:12:01 · 777 阅读 · 1 评论 -
UVA816
这道题虽然只是搜索的题目只是bfs搜索,但个人感觉要学习的地方其实挺多的,这道题的输入就并不简单,还是用到了stringstream来切割每一行要读入的字符,自己感觉这个东西真的挺有用的。而用数字来表示方向并且把转向也转变为数字的变化,这一点刚开始我并没有找到很好的方法来处理转向。以及has_edge数组的应用感觉也值得学习,虽然在算法上,这道题算法单一,但从编程技巧来说,我觉得本题非常值得一写。...原创 2019-01-20 18:50:01 · 667 阅读 · 3 评论 -
UVA11853
题目大意:给你一个内部有若干个圆的正方形,问能否从左边界走到右边界。 思路其实不好想,思路分为两部分,先判断可行性,从上边界出发从障碍物上如果可以到达下边界,那么则证明其无解,很好理解,障碍物将图分成两部分,无论怎么走都走不到右边界,那么下面的问题就变成怎么求出发的点和离开的点, 不能走的情况分为两种, 1.起点就在障碍物内,这个也相对容易判断,半径和横坐标比较即可 2.起点被障碍物包围了...原创 2019-01-31 17:41:09 · 268 阅读 · 0 评论