图论
文章平均质量分 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 · 836 阅读 · 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 · 761 阅读 · 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 · 834 阅读 · 0 评论 -
UVa 10986 Sending email 优先队列优化的dijkstra 和 朴素dijkstra 效率对比
/*** 原来是想把这题用来dijkstra练手的,突然到不如来测测dijkstra用优先队列优化之后效率的变化情况* 本想如果优化效果不是很明显的话,就无所谓用哪个了。。结果。。。这题居然。。。不优化就T !!* 直接上代码了。。dijkstra()是朴素的 dijkstra_q() 是优先队列优化后的。*/#include #include #include #原创 2013-09-18 22:32:56 · 814 阅读 · 0 评论 -
POJ 2117 Electricity (tarjan)删割点后求块数
/*** tarjan: 求一个图中删除一个割点后所得到的最大块数。* 在用tarjan去遍历每个结点的时候,判断割点是如何判断的?* low[v] >= dfn[u] (这里注意不要和求割边混淆)* 求割边的时候,是以low[v] > dfn[u]. 这个其实可以画下图就很好理解了。* 割点的定义是,删除该结点以及和该结点相关联的边。* 所以用lo原创 2013-09-18 20:38:21 · 624 阅读 · 0 评论 -
HDU 4318 Power transmission 最长路 (dijkstra + 优先队列) 水
/*** 水最长路:* 题目要求损失量,不过可以转换成残留量,求最长路。* 用的是优先队列优化的dijkstra,不优化的话,O(n^2)的估计会T* 具体思路就是:先转换边权,把损失百分比转换成剩余百分比。。就是100%-x%* 在找最长路的时候就是不断相乘,因为百分比不会超过100%所以dijkstra用优先队列* 优化的思想是成立的。*/#i原创 2013-10-04 23:21:49 · 1781 阅读 · 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 · 846 阅读 · 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 · 612 阅读 · 0 评论 -
HDU 3339 In Action 最短路(dijkstra) + 裸01背包
/*** dijkstra + 01背包: A的有点吃力呐。。但至少没看题解吧* 一开始也是理解错题意了。 以为就是一辆坦克。经过station就行。还去记录了path,为了算power大于一半* 其实不是的,有足够辆坦克,一个坦克占领一个,必须是stop here。 占领其他station就要用其他坦克了* 其实也不难想。。用dijkstra求出单起始源到各原创 2013-08-15 23:24:36 · 644 阅读 · 0 评论 -
HDU 1598 find the most comfortable road 枚举 + kruskal算法
/*** 枚举 + kruskal:* 因为要找的是一条路的最大值减最小值。 就可以利用kruskal的贪心思想。* 把所有边按权从小到大(从大到小其实都一样)排序。然后一一枚举,找出所有能使得x和y连通的路径。* 再在这些路径中找一个舒适度最高的,也就得出答案了。* 对于这题来说,生成树是不定的,也就是说,只要在贪心的过程中,有x和y在同一集合中,原创 2013-08-13 19:55:08 · 595 阅读 · 0 评论 -
HDU 1385 Minimum Transport Cost (Floyd算法 + 路径输出)
/*** Floyd + 路径输出 :* 挺裸的一题求两顶点最多路。 除了要注意当路径有多条具有相同最短路径的时候,* 按字典序输出。。* 这题挺坑的: 首先数据坑,题目也没说明。 当询问的是a到a本身的话* 是输出 Path: a 还是Path: a-->a (正确答案应该是前者)* 思路: 呃。。。上来直接Floyd吧。。*原创 2013-08-11 14:51:12 · 2571 阅读 · 0 评论 -
HDOJ 2066 一个人的旅行 (多次求单源最短路径)
/*** 还是最短路: 还是dijkstra* 但是! 按题意说的草儿一开始的城市,是一个可以用0的时间到输入给的几个出发城市的。* 说白了,就是给你一堆源点,让你依次dijkstra。。就这样!* 千万不能把草儿的家乡看做源点只进行一次dijkstra。* 这样的话相当于源点到几个出发城市的距离都是0,如果只进行一次dijkstra会怎样?* 因为原创 2013-08-07 17:05:00 · 1226 阅读 · 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 · 918 阅读 · 0 评论 -
POJ 1236 Network Of Schools ( tarjan求强连通分量 + 缩点成DAG图 )
/*** tarjan + 缩点:* 这题题意其实就是求:强连通分量数(task1) 和 在对强连通分量缩点后形成的* DAG图加至少多少条边,能使其成为一个强连通图(也就是题目所说的任何一个点出* 去都能到图中任何一个点。)* 怎么算强连通分量,怎么缩点。 其实tarjan算法就行,理解tarjan后,把所有点* 都可以用数组belong去分原创 2013-08-07 08:23:41 · 1206 阅读 · 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 · 800 阅读 · 0 评论 -
POJ 1258 Agri-Net 最小生成树(Kruskal算法入门)
/*** 最小生成树(入门) Kruskal算法:* 这题输入的数据其实有一半一上是根本不需要存的。因为依题意这是个无向图* 而且看样例也看得出,对角线及以下(或以上)都是可以省去的。* 这样在存数据的时候直接存当j > i的时候(也就是上三角的数据),都将数据* 存到nodes[]中,node表示边,存两点和权值。* 根据Kruskal算法,原创 2013-08-03 10:32:17 · 759 阅读 · 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 · 1118 阅读 · 1 评论