![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论
文章平均质量分 74
图论
RocSin
这个作者很懒,什么都没留下…
展开
-
拓扑排序
先上百科: http://baike.baidu.com/view/288212.htm 拓扑排序就是 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 ∈E(G),则u在线性序列中出现在v之前。 首先熟悉是怎么实现的: 拓扑排序方法如下:原创 2013-08-02 23:12:05 · 840 阅读 · 0 评论 -
POJ 1716 Integer Intervals 差分约束(入门)
/** * 差分约束: * 刚接触差分约束的确很纠结。。 * 差分约束系统的题其实是研究题目的约束条件,再根据最短路在松弛边的时候的固有性质来理解的。 * 就如这题,由题目意思有如下约束条件: * dis[u]表示u-1之前所取的关键点的数, 对于边(i, i+1)有 * 1、dis[i+1] - dis[i] >= 0 * 2、dis[原创 2013-09-21 23:06:50 · 767 阅读 · 0 评论 -
POJ 3159 Candies 差分约束 spfa+栈+邻接表
/** * 很水的一道差分约束题: (STL就TLE) * 开始不看discuss T了n次,看了discuss说要用栈。。改用栈还是T * 最后手写栈和邻接表。。完全抛弃STL,最后C++ 500+MS G++ 700+MS * 其实清楚理解了差分约束系统之后且能够看出题目考的是这类的,都挺水。 * 题目说明 snoopy and flymouse were原创 2013-09-20 16:54:29 · 836 阅读 · 0 评论 -
UVa 10986 Sending email 优先队列优化的dijkstra 和 朴素dijkstra 效率对比
/** * 原来是想把这题用来dijkstra练手的,突然到不如来测测dijkstra用优先队列优化之后效率的变化情况 * 本想如果优化效果不是很明显的话,就无所谓用哪个了。。结果。。。这题居然。。。不优化就T !! * 直接上代码了。。dijkstra()是朴素的 dijkstra_q() 是优先队列优化后的。 */ #include #include #include #原创 2013-09-18 22:32:56 · 825 阅读 · 0 评论 -
POJ 2117 Electricity (tarjan)删割点后求块数
/** * tarjan: 求一个图中删除一个割点后所得到的最大块数。 * 在用tarjan去遍历每个结点的时候,判断割点是如何判断的? * low[v] >= dfn[u] (这里注意不要和求割边混淆) * 求割边的时候,是以low[v] > dfn[u]. 这个其实可以画下图就很好理解了。 * 割点的定义是,删除该结点以及和该结点相关联的边。 * 所以用lo原创 2013-09-18 20:38:21 · 633 阅读 · 0 评论 -
HDU 4318 Power transmission 最长路 (dijkstra + 优先队列) 水
/** * 水最长路: * 题目要求损失量,不过可以转换成残留量,求最长路。 * 用的是优先队列优化的dijkstra,不优化的话,O(n^2)的估计会T * 具体思路就是:先转换边权,把损失百分比转换成剩余百分比。。就是100%-x% * 在找最长路的时候就是不断相乘,因为百分比不会超过100%所以dijkstra用优先队列 * 优化的思想是成立的。 */ #i原创 2013-10-04 23:21:49 · 1806 阅读 · 0 评论 -
UVa 658 It's not a Bug, it's a Feature! 位运算技巧+dijkstra优先队列优化
/** * 我真服了。 UVa 数组越界只返回WA,不给RE 这题debug了两天,WA了两天 * 最后发现就是数组越界的问题!! * 做这题学了个很不错的位运算技巧: * 这样写下来时间还是比较多,后来看了别人的解题报告,发现在判定当前状态是否可以转换的时候可以直接用位运算去操作: ①判定某些位置是否为1,如判定2、4位置为1,则转化为判断x|0101是否等于x原创 2013-09-15 21:33:01 · 847 阅读 · 0 评论 -
UVa 10048 - Audiophobia 简单Floyd
/** * 好久没写题解了。。。要么都是大水题。。要么太难了没来得及补 T^T * 今天上个大水吧。。表示我还活着 -_- * 简单Floyd: * 只不过dis[i][j] 表示的是 i->j的路上最大权的最小值。 * 只要在floyd上稍作修改。。就是裸地floyd。。 */ #include #include #include #include #incl原创 2013-09-07 21:35:51 · 615 阅读 · 0 评论 -
HDU 3339 In Action 最短路(dijkstra) + 裸01背包
/** * dijkstra + 01背包: A的有点吃力呐。。但至少没看题解吧 * 一开始也是理解错题意了。 以为就是一辆坦克。经过station就行。还去记录了path,为了算power大于一半 * 其实不是的,有足够辆坦克,一个坦克占领一个,必须是stop here。 占领其他station就要用其他坦克了 * 其实也不难想。。用dijkstra求出单起始源到各原创 2013-08-15 23:24:36 · 648 阅读 · 0 评论 -
HDU 1598 find the most comfortable road 枚举 + kruskal算法
/** * 枚举 + kruskal: * 因为要找的是一条路的最大值减最小值。 就可以利用kruskal的贪心思想。 * 把所有边按权从小到大(从大到小其实都一样)排序。然后一一枚举,找出所有能使得x和y连通的路径。 * 再在这些路径中找一个舒适度最高的,也就得出答案了。 * 对于这题来说,生成树是不定的,也就是说,只要在贪心的过程中,有x和y在同一集合中,原创 2013-08-13 19:55:08 · 598 阅读 · 0 评论 -
HDU 1385 Minimum Transport Cost (Floyd算法 + 路径输出)
/** * Floyd + 路径输出 : * 挺裸的一题求两顶点最多路。 除了要注意当路径有多条具有相同最短路径的时候, * 按字典序输出。。 * 这题挺坑的: 首先数据坑,题目也没说明。 当询问的是a到a本身的话 * 是输出 Path: a 还是Path: a-->a (正确答案应该是前者) * 思路: 呃。。。上来直接Floyd吧。。 *原创 2013-08-11 14:51:12 · 2574 阅读 · 0 评论 -
HDOJ 2066 一个人的旅行 (多次求单源最短路径)
/** * 还是最短路: 还是dijkstra * 但是! 按题意说的草儿一开始的城市,是一个可以用0的时间到输入给的几个出发城市的。 * 说白了,就是给你一堆源点,让你依次dijkstra。。就这样! * 千万不能把草儿的家乡看做源点只进行一次dijkstra。 * 这样的话相当于源点到几个出发城市的距离都是0,如果只进行一次dijkstra会怎样? * 因为原创 2013-08-07 17:05:00 · 1232 阅读 · 0 评论 -
POJ 1125 Stockbroker Grapevine (Dijkstra求所有点的单源最短路径)
/** * Dijkstra: 其实这题可以用floy的。。写惯了dijkstra。就。。 * 理解了题意应该就可以A了,这题数据太太太水了。。我那种不连通的情况完全没有考虑也A了。 * * 题意: 直接抄discuss了。 * 首先,题目可能有多组测试数据,每个测试数据的第一行为经纪人数量N(当N=0时, * 输入数据结束),然后接下来N行描述第i(1<=i<=N原创 2013-08-07 16:36:41 · 922 阅读 · 0 评论 -
POJ 1236 Network Of Schools ( tarjan求强连通分量 + 缩点成DAG图 )
/** * tarjan + 缩点: * 这题题意其实就是求:强连通分量数(task1) 和 在对强连通分量缩点后形成的 * DAG图加至少多少条边,能使其成为一个强连通图(也就是题目所说的任何一个点出 * 去都能到图中任何一个点。) * 怎么算强连通分量,怎么缩点。 其实tarjan算法就行,理解tarjan后,把所有点 * 都可以用数组belong去分原创 2013-08-07 08:23:41 · 1211 阅读 · 0 评论 -
POJ 1062 枚举单源最短路径(dijkstra算法)
/** * dijkstra : * 这题题目有点坑: 说的是等级高的不愿和等级低的间接接触,没有说等级低的不愿和等级高的间接接触。 * 比如: 有三个人 A level: 3 B level: 4 C level: 5 如果B先和A接触,C不愿和A接触,而B先和C接触,A也不愿和B接触。 * 既然是这样的话,就只能多个设定了。而且要对各定点进行枚举。 * 首原创 2013-08-04 18:47:51 · 806 阅读 · 0 评论 -
POJ 1258 Agri-Net 最小生成树(Kruskal算法入门)
/** * 最小生成树(入门) Kruskal算法: * 这题输入的数据其实有一半一上是根本不需要存的。因为依题意这是个无向图 * 而且看样例也看得出,对角线及以下(或以上)都是可以省去的。 * 这样在存数据的时候直接存当j > i的时候(也就是上三角的数据),都将数据 * 存到nodes[]中,node表示边,存两点和权值。 * 根据Kruskal算法,原创 2013-08-03 10:32:17 · 762 阅读 · 0 评论 -
UVa 558 Wormholes 判断负权环 对比bellman-ford和spfa效率
第一个居然是spfa 第二个才是bellman-ford /** * 又是大水。。再来测试测试bellman-ford和spfa的效率。。 * 居然。。。bellman-ford比spfa要快好多。。。 求解释? * 附加floyd判负权环。其实原来和bellman一样。 */ #include #include #include #include #incl原创 2013-09-19 22:04:16 · 1123 阅读 · 1 评论