图论
Etta19
这个作者很懒,什么都没留下…
展开
-
【板子】单源最短路
啦啦啦周六晚开心放假啦!原创 2017-07-22 17:24:36 · 303 阅读 · 0 评论 -
【POJ 2449】Remmarguts's Date (A*搜索第k短路)
传送门 POJ 2449 题意:给出一张图,求两点S、T之间的第K短路。I think 学习A*搜索好文力荐:http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx A*搜索从S第k次搜到T,该路径的总长即答案。 注意,根据题目要求:第K短路径可以重复经过某点。若数据给出两个的S==T,则++K原创 2017-08-19 17:58:53 · 324 阅读 · 0 评论 -
【POJ 1724】Roads (限制最短路)
传送门 Roads 题意:给出一张n个节点的图,每条边有长度与花费两种权值。求在花费C内从点1到点n的最短路径。I think 有限制条件的最短路。Dijkstra将满足不超过花费的被更新点加入优先队列 ,在队列里按照长度排序。Code#include<cstdio>#include<queue>using namespace std;const int sn = 1e3+原创 2017-08-19 18:03:18 · 380 阅读 · 0 评论 -
【HDU 2433】Travel (BFS+最短路径树)
传送门 Travel 题意:一张n点m条边的图,边权均为1。对于每一条边,求删除它之后所有点对之间的最短路径和。I think 由于边权均为1,则可用BFS对每个点i求最短路并用Sum[i]记所有点到i的最短距离和。枚举删除边j时,若该边存在于点i的最短路径树中,对i进行屏蔽边j及其反向边的BFS再次求最短路。Code#include<cstdio>#include<cstr原创 2017-08-19 18:12:23 · 375 阅读 · 0 评论 -
【POJ 3259】Wormholes (SPFA 判断负环)
传送门 Wormholes 题意:给出一张图,判断是否存在负环。I think 方法:SPFA求单源最短路,若一个点入队超过N次,那么存在负环。Code#include<queue>#include<cstdio>#include<cstring>using namespace std;const int sm = 5250;const int sn = 505;co原创 2017-08-19 17:41:26 · 426 阅读 · 0 评论 -
【BZOJ 1975】魔法猪学院(A*搜索+手打堆)
传送门 魔法猪学院I think 解法如题 主要觉得手打堆太优美 Code#include<cstdio>#include<queue>#define s second using namespace std;typedef pair<double,int> pdi;const int sm = 5e3+5;const int sn = 2e5+5;const do原创 2017-08-20 19:54:43 · 327 阅读 · 0 评论 -
【POJ 1094】Sorting it all out (拓扑排序)
传送门 Sorting it all out 题意:判断题给条件能否得出唯一拓扑序且无环,若是则按拓扑序输出序列顺序,否则按照要求输出。I think 每输入一条边跑一次拓扑 ,任意拓扑过程中若存在环,则入栈元素数 < N,任意时刻若栈中超过一个元素,则暂不能确定顺序。 若可以确定顺序且无环,则添加完当前边确定唯一拓扑序 。Code#include<cstdio>using n原创 2017-08-20 20:01:32 · 271 阅读 · 0 评论 -
【POJ 3687】Labeling Balls (拓扑排序)
传送门 Labeling Balls 题意:按照拓扑序输出序列,在多解时先保证1的序号最小,然后是2的序号最小,3的……I think 拓扑排序(反向建边+建立大根堆维护入度为 0的栈内元素)若正向建边+维护小根堆,每次取出最小的元素只能保证它满足当前最小 ,不一定是整体最小,但反向建边+维护大根堆可以通过每次取最大元素使得最小元素从整体上看尽可能置后 ,最后反向输出答案即可。原创 2017-08-20 20:05:37 · 300 阅读 · 0 评论 -
【POJ 2762】Going from u to v or from u ? (Tarjan + 拓扑排序)
传送门 Going from u to v or from u ? 题意:给出一张图,判断任意两点x,y是否能够从x走到y**或**从y走到x。I think 先用tarjan求强连通分量缩点。然后拓扑排序检查是否存在1个以上的点入度为0,若是,则不满足条件。原创 2017-08-20 20:16:22 · 334 阅读 · 0 评论 -
【UVA 247】Calling Circles (floyd判断连通性+map)
传送门 Calling Circles 题意:如果两个人相互打电话(直接或间接),则说他们在同一个电话圈里。例如,a打给b,b打给c,c打给d,d打给a,则这4个人在同一个圈里;如果e打给f但f不打给e,则不能推出e和f在同一个电话圈里。输入n个人的m次电话,找出所有电话圈。人名只包含字母,不超过25个字符,且不重复。Code#include<map>#include<strin原创 2017-08-18 21:17:21 · 363 阅读 · 0 评论 -
【codeforces 295B】Greg and Graph ( floyd )
传送门 Greg and Graph 题意:给出n个点,两两之间均存在有向边。按顺序删除指定点及其所有连边,求每次删除点之前图中现存任意两点间距离和。I think 时光倒流吧…… 题目要求的操作相当于从删除列表中最后一个点开始添加点,每次跑Floyd将用当前点更新的最短路添加至答案。Code#include<cstdio>typedef long long LL;原创 2017-08-18 21:12:49 · 541 阅读 · 0 评论 -
【POJ 1094】 Sorting It All Out (拓扑排序)
本以为是拓扑与强连通分量的伟大结合。。。原创 2017-08-17 09:30:47 · 283 阅读 · 0 评论 -
【UVALIVE 5713】秦始皇修路(最小瓶颈路+Kruskal)
道士徐福的名字让我们开始唱起“徐福记……”原创 2017-08-17 22:25:29 · 696 阅读 · 0 评论 -
【总结】强连通分量
“Tarjan 陪伴强连通分量 生成树完成后思路才闪光”原创 2017-08-13 21:53:25 · 588 阅读 · 0 评论 -
【UVA1151】Buy or Build(MST+子集枚举)
今天写多少篇题解呢(⊙o⊙)原创 2017-08-18 11:24:53 · 336 阅读 · 0 评论 -
【BZOJ 1601】灌水(设置虚点+MST)
传送门祝不被权限QvQ 题意:n个点,给出两两点修路引水费用与就地建水库费用,求使所有点直接或间接得到水的最小花费。I think 设置虚点连接建水库的点 ,建水库费用即该点与虚点的边权,添加完其他边Kruskal跑MST。Code#include<cstdio>#include<algorithm>using namespace std;const int sm = 300+1原创 2017-08-18 11:48:50 · 333 阅读 · 0 评论 -
【UVA11865】比赛网络(二分+有向生成树)
传送门 比赛网络 题意:给出n个节点,m条有向边,每条边有花费与带宽。求解在最大花费为C的条件下构建从点0能够到达任意节点的有向图的最小带宽最大值。I think 二分+最小树形图模板Code#include<cstdio>using namespace std;const int sm = 1e4+5;const int Inf = 0x3f3f3f3f;int T,N,原创 2017-08-18 19:17:06 · 406 阅读 · 0 评论 -
【BZOJ 1016】最小生成树计数(MST+搜索)
传送门 最小生成树计数 题意:求不同形态的最小生成树总数I think 为什么会有不同形态的最小生成树?前提是有了权值相同的边。 我们可以证明,在不同的最小生成树中,权值相同的边的数量是相同的。首先,我们将每个点置于不同的集合中。取权值最小边集,去除环,合并剩余边的端点集合。无论去除环上的任意边,被该权值的边合并的端点集合数量不变,且形态一致。 同理对于权值原创 2017-08-18 19:42:08 · 325 阅读 · 0 评论 -
【BZOJ 1604】Cow Neighborhoods(哈夫曼距离+Multiset)
传送门 BZOJ 1604 题面如下1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1035 Solved: 414Description了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了原创 2017-08-18 21:02:48 · 573 阅读 · 0 评论 -
【网络流24题】汽车加油行驶(分层图+最短路)
传送门 汽车加油行驶 题意:给定网格,部分格点设有加油站,汽车驶至该格点必须加油。给定一辆车加满油的最大行驶距离,加一次油的花费,以及在任意点设置新油库的花费。求一辆满油车从左上角格点到右下角格点的最小花费。I think 根据汽车的剩余油量建立分层图。 若油量不满,点< i,k>向点< i,top>连长度为A/A+C的边。 若油量非空,非油库点< i,k>原创 2017-08-28 19:22:57 · 556 阅读 · 0 评论