随笔分类 -  ICPC-图论

摘要:模板从 这里 搬运,链接博客还有很多网络流题集题解参考。 最大流模板 ( 可处理重边 ) const int maxn = 1e6 + 10; const int INF = 0x3f3f3f3f; struct Edge { int from,to,cap,flow; Edge(){} Edge( 阅读全文
posted @ 2018-01-06 16:56 qwerity 阅读(259) 评论(0) 推荐(0)
摘要:题目链接 题意 : 中文题请点链接,挺复杂的... 分析 : 乍一看是个最短路,实际就真的是个最短路。如果没有 “ 在有多条最短路径的时候输出换乘次数最少的” 这一条件的约束,那么这题就是直接建图然后跑个 Dij 就行了,那有了这个约束条件还是要大胆的向最短路思路靠,题目既然需要换乘次数少的,那么我 阅读全文
posted @ 2017-12-20 11:16 qwerity 阅读(409) 评论(0) 推荐(0)
摘要:差分约束系统详解(极力推荐)==> http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 个人瞎想 : 差分约束系统的题最重要的就是充分利用题目条件建立模型、构造出不等式最后使用最短路来算出答案,当然有些题目即使构造出了若 阅读全文
posted @ 2017-11-11 22:36 qwerity 阅读(212) 评论(0) 推荐(0)
摘要:题意 : 给出一个有向图、求起点 s 到终点 t 的第 k 短路、不存在则输出 -1 #include<stdio.h> #include<string.h> #include<queue> #include<algorithm> using namespace std; const int INF 阅读全文
posted @ 2017-11-07 21:10 qwerity 阅读(293) 评论(0) 推荐(0)
摘要:题意 : 给出 P 个顶点以及 Q 条有向边,求第一个点到其他各点距离之和+其他各点到第一个点的距离之和的最小值 分析 : 不难看出 min( 第一个点到其他各点距离之和+其他各点到第一个点的距离之和 ) = min( 第一个点到其他各点距离之和) + min( 其他各点到第一个点的距离之和 ),前 阅读全文
posted @ 2017-10-25 20:47 qwerity 阅读(171) 评论(0) 推荐(0)
摘要:题意 : 给出二维平面上的两个点代表起点以及终点,接下来给出若干条地铁线路,除了在地铁线路上行进的速度为 40km/h 其余的点到点间都只能用过步行且其速度为 10km/h ,现问你从起点到终点的最短路是多少? 分析 : 这题建完图之后就是裸的最短路了,在建图的时候需要注意地铁的站点之间不能隔点建拥 阅读全文
posted @ 2017-10-25 18:46 qwerity 阅读(139) 评论(0) 推荐(0)
摘要:题意 : 给出 N 头奶牛在比赛的结果,问你最多的能根据给出结果确定其名次的奶牛头数。结果给出的形式为 A B 代表在比赛当中 A 战胜了 B 分析 : 对于一头奶牛来说,如果我们能确定其他 N - 1 头奶牛和它的关系,那么它的名次就确定了。将奶牛之间的胜负关系建图,如果给出 A B 那么我们建一 阅读全文
posted @ 2017-10-24 20:52 qwerity 阅读(134) 评论(0) 推荐(0)
摘要:题意 : 给出 N 个点,各个点之间的路径长度用给出的下三角矩阵表示,上上角矩阵和下三角矩阵是一样的,主对角线的元素都是 0 代表自己到达自己不用花费,现在问你从 1 到 N 的最短路,矩阵的 x 代表点间无法互相到达 分析 : 最短路模板…… 就是在输入的时候需要将字符串变成整数、自己写也可以,也 阅读全文
posted @ 2017-10-24 20:39 qwerity 阅读(165) 评论(0) 推荐(0)
摘要:题意 : 给出 N 个点,以及 M 条双向路,每一条路的权值代表你在这条路上到达终点需要那么时间,接下来给出 W 个虫洞,虫洞给出的形式为 A B C 代表能将你从 A 送到 B 点,并且回到 C 个时间点之前,也就是时光倒流了 C 个时间并且此时你在 B 点,现在问你是否能够在图上的这些点中走,使 阅读全文
posted @ 2017-10-24 20:32 qwerity 阅读(173) 评论(0) 推荐(0)
摘要:题意 : 找出 1 到 N 点的所有路径当中拥有最大承载量的一条路,输出这个最大承载量!而每一条路的最大承载量由拥有最大承载量的那一条边决定 分析 : 与 POJ 2253 相似且求的东西正好相反,属于求从一个指定起点到终点的所有路径当中拥有最大or最小的边是什么。只要改变一下 Dijkstra 中 阅读全文
posted @ 2017-10-24 20:15 qwerity 阅读(176) 评论(0) 推荐(0)
摘要:题意 : 给出二维平面上 N 个点,前两个点为起点和终点,问你从起点到终点的所有路径中拥有最短两点间距是多少。 分析 : ① 考虑最小生成树中 Kruskal 算法,在建树的过程中贪心的从最小的边一个个添加,每添加一条边就用用并查集判断起点和终点是否已经连接起来,如果连接起来了,那么答案就是这条边, 阅读全文
posted @ 2017-10-21 15:33 qwerity 阅读(175) 评论(0) 推荐(0)
摘要:算法原理参考链接 ==> UESTC算法讲堂——最小生成树 关于两种算法的复杂度分析 ==> http://blog.csdn.net/haskei/article/details/53132681 故稀疏图用 Kruskal、稠密图用 Prime、空间足够情况下都用 Prime + Heap 优化 阅读全文
posted @ 2017-10-20 23:32 qwerity 阅读(553) 评论(0) 推荐(0)
摘要:Floyd算法适用于求解全源最短路、也就是能够求解任意两点间的最短路径并且是适用于含有负权边的图,但是含有负环则不行了!空间复杂度为O(n2)、时间复杂度为O(n3)。其具体的原理在百度能够找到很多,下面只说说我的理解,首先关键代码如下 即枚举所有的点去作为中转点去松弛 i 和 j ,那考虑这样的一 阅读全文
posted @ 2017-10-20 20:06 qwerity 阅读(416) 评论(0) 推荐(0)
摘要:Bellman-ford 算法适用于含有负权边的最短路求解,复杂度是O( VE ),其原理是依次对每条边进行松弛操作,重复这个操作E-1次后则一定得到最短路,如果还能继续松弛,则有负环。这是因为最长的没有环路的路,也只不过是V个点E-1条边构成的,所以松弛E-1次一定能得到最短路。因此这个算法相比 阅读全文
posted @ 2017-10-18 23:35 qwerity 阅读(275) 评论(0) 推荐(0)
摘要:Dijkstra算法适合求不包含负权路的最短路径,通过点增广、在稠密图中使用优化过的版本速度非常可观。本篇不介绍算法原理、只给出模板,这里给出三种模板,其中最实用的是加上了堆优化的版本 算法原理 or 学习参考链接 : 点我 、不要点它点我!、为何不适用于带负权边图 ( Dijkstra 动态演示 阅读全文
posted @ 2017-10-18 16:54 qwerity 阅读(476) 评论(0) 推荐(0)
摘要:在做图有关的题目,在一些情况下邻接矩阵耗费空间较大、动态开辟的邻接表又耗时耗内存,这时候你可能需要一个静态邻接表! 静态邻接表在各种图的算法当中也是有一席之地的,比如利用堆优化的Dij算法求最短路、SPFA等等 下面给出我的静态邻接表模板 阅读全文
posted @ 2017-10-17 13:18 qwerity 阅读(567) 评论(0) 推荐(1)
摘要:题意 :输入一棵二叉树,你的任务是按从上到下、从左到右的顺序输出各个结点的值。每个结 点都按照从根结点到它的移动序列给出(L表示左,R表示右)。在输入中,每个结点的左 括号和右括号之间没有空格,相邻结点之间用一个空格隔开。每棵树的输入用一对空括 号“()”结束(这对括号本身不代表一个结点),注意,如 阅读全文
posted @ 2017-07-30 13:48 qwerity 阅读(254) 评论(0) 推荐(0)