
图论
yanga11ang
an ACMer,team: Echo
展开
-
Minimum Cut POJ - 2914 无向图最小割,stoer_wagner算法
无向图最小割,stoer_wagner算法题意: 给一副无向图,求一组最小割集,将图分成两份 题解 某算法刚好可解决 stoer_wagner算法 算法流程: 1.min=MAXINT,固定一个顶点P 2.从点P用类似prim的算法扩展出“最大生成树”,记录最后扩展的顶点和最后扩展的边 3.计算最后扩展到的顶点的切割值(即与此顶点相连的所有边权和),若比min小更新min 4.合原创 2017-10-17 17:55:08 · 304 阅读 · 0 评论 -
Going from u to v or from v to u? POJ - 2762 是否为单向连通图
判断单向连通图 tarjan题意 给你一个有向图,问任意两点u,v 是否总存在V(u,v) 或 V(v,u) 思路 用tarjan算法将强联通分量缩点 判断生成树(不成树肯定错)是否退化成链 随便深搜一下最长链就好 Ps:这题数据水了 hack数据: 1 4 4 1 2 1 3 2 4 3 4 代码/* * Author : Echo * Email原创 2017-10-16 17:08:28 · 309 阅读 · 0 评论 -
Popular Cows POJ - 2186 找金字塔顶点?
有向图中所有点都能到达的点题意 题目大概是有好多牛,牛(们)之间具有某种关系(鬼知道),这种关系具有传递性,如果有 A欢迎B和B欢迎C,那么就有A欢迎C。我们要找到能让其他所有的牛都欢迎的牛。 思路 画图易知 如果强联通分量中有多个缩点,出度为零,要么不成联通,要么联通也不能被所有牛崇拜,故而本题求的是唯一的一个出度为零的连通分量的规模 Ps:对于入度没有要求(画蛇添足必须死) 代码/*原创 2017-10-15 19:18:31 · 248 阅读 · 0 评论 -
The Bottom of a Graph POJ - 2553 强联通分量中出度为零的点集
强联通分量中出度为零的点集题意 使用的图论的方式说明了一个新的定义,汇点的定义,v是图中的一个顶点,对于图中的每一个v能到达的顶点w,w也可达v,则称v为汇点。图的底部为图中顶点的子集,子集中的所有的点都是汇点,求图的底部。 思路 如果图的底部都是汇点,则说明底部中的任意两点都互相可达,则底部为强连通分量,并且没有出边,所以任务就变成求图的强连通分量并且出度为零的点集 代码/* * Aut原创 2017-10-15 18:20:04 · 326 阅读 · 0 评论 -
Network of Schools POJ - 1236 tarjan强连通分量
tarjan强连通分量题意: N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。 思路 也就是: — 给定一个有向图,求: 1) 至原创 2017-10-15 16:16:57 · 281 阅读 · 0 评论 -
Frogs' Neighborhood POJ - 1659 havel定理
havel定理:判断度数序列是否可图(简单图)题意 未名湖附近共有N个大小湖泊L1, L2, …, Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤i ≤ N)。如果湖泊Li和Lj之间有水路相连(无向图),则青蛙Fi和Fj互称为邻居。现在已知每只青蛙的邻居数目x1,x2, …, xn,请你给出每两个湖泊之间的相连关系。 思路 直接贪心是有误的:1 2 3 2 0 用 havel原创 2017-10-15 17:41:59 · 277 阅读 · 0 评论 -
Slim Span POJ - 3522 最小生成树最大边和最小边之差最小
最小生成树最大边和最小边之差最小题意: 求最小生成树最大边和最小边的最小差值思路 用kruskal 算法,枚举最小边即可代码/* * Author : Echo * Email : 1666424499@qq.com * Description : * Created Time : 2017/10/10 19:25:26 * Last Mod原创 2017-10-14 16:34:15 · 591 阅读 · 0 评论 -
Command Network POJ - 3164 有向图的最小生成树(最小树形图朱刘算法)
有向图的最小生成树(最小树形图朱刘算法)题意 给你N个点的坐标和M条有向边,问你以点1为根的最小树形图的边权之和。思路 套用朱-刘算法 求解最小树形图即可 复杂度O(EV)设根结点为v0,(1)求最短弧集合E0 从所有以vi(i ≠ 0)为终点的弧中取一条最短的,若对于点i,没有入边,则不存在最小树形图,算法结束;如果能取,则得到由n个点和n-1条边组成的图G的一个子图G’,这个子图的权值一原创 2017-10-14 14:25:11 · 408 阅读 · 0 评论 -
Big Christmas Tree POJ - 3013 一种最短路的出题姿势
题意:给n个点从1到n标号,下面一行是每个点的权,另外给出m条边,下面是每条边的信息,两个端点+权值,边是无向边。你的任务是选出一些边,使这个图变成一棵树。这棵树的花费是这样算的,1号固定为树根,树中每个父节点下面的边都有个边权,然后边权乘上这条边的下面所有的子孙后代的点权和.题目换一个角度就会发现其实就是一个裸的最短路,即答案也是每个点权乘上从起点到终点的边权和,即是最短路代码如下:/* * A原创 2017-10-06 10:18:24 · 303 阅读 · 0 评论 -
Sightseeing Cows POJ - 3621 环点权与边权和之比最大
大致题意: 给出一个有向图,每个点都有一个点权,每条有向边也都有一个边权,要求出一个环使得环中点权之和与边权之和的比值最大。 思路: 如果将环上的边和点一一绑定,E(u,v)=k(e(u,v))-value[u],这样就变成选取一个合适的k; 考虑k_max是答案,然后发现k >k_max不可能有负环,而k/* * Author : Echo * Email原创 2017-10-06 20:59:32 · 715 阅读 · 0 评论 -
Cow Relays POJ - 3613 邻接矩阵的简单用法
本题的大意就是问从S 到 T 经过边得个数恰为k的最短路是多少。如果学过离散数学 就应该知道 邻接矩阵A A^1里的元素a[i][j] 代表i到j的走一步一条路; A^2里的元素a[i][j] 代表i到j的走两步一条路 ; A^n里的元素a[i][j] 代表i到j的走N步一条路 ; 然后再矩阵快速幂一下就好代码如下/* * Author : Echo * Email原创 2017-10-06 19:11:17 · 301 阅读 · 0 评论 -
Full Tank? POJ - 3635 二维最短路(dp?)
题目: n个城市之间有m条双向路。每条路要耗费一定的油量。每个城市的油价是固定并且已经给出的。有q个询问,表示从城市s走到e,油箱的容量为c,求最便宜的方案。 思路: 可以分层图最短路,有点类似DP的思想 按油量分层,dis[i][j]表示到节点i还有j个油的最小花费(不是最短路) 两种决策,加一个油或者直接走 需要比较好的剪枝,不然会超时,可以离线,每次不用更新所有可能的油量,更新比原创 2017-10-07 18:12:17 · 348 阅读 · 0 评论 -
dinic 最大流模板
/* * Author : Echo * Email : 1666424499@qq.com * Description : dinic 算法模板 * Created Time : 2017/8/30 10:05:30 * Last Modify : 2017/9/25 15:55:30 * File Name : C:\Use原创 2017-10-08 15:15:55 · 243 阅读 · 0 评论 -
Picnic Planning POJ - 1639 限制顶点度数的MST
题意:有n个兄弟去野餐,目的地为Park。每个人可以选择直接去Park,也可以选择去其他人家,和他一起坐车去Park。每个人家的停车位没有限制,但是Park的停车数不能超过k。问所有人的最短路程。思路 上手可能觉得题目很难,但是分解一下就会发现很简单. ①根节点的度有限制的生成树或许不好写,但度最小的生成树却很简单. ②有一种方法可以 将根节点度为i的最小生成树变成成i+1的MST 方法如下原创 2017-10-09 17:00:24 · 346 阅读 · 0 评论 -
The Unique MST POJ - 1679 判断最小生成树是否唯一 prim算法
题目大意:给你一个有权值的无向图,判断最小生成树是否唯一。思路 首先,使用prim算法为基础求MST, 其次,在此基础上加入数组dp[i][j],用于记录i到j路径上的权值最大的边。 最后,看没有添加的边是否能替换,如果添加形成环路的第二大边。(也可以求次最小生成树)。代码如下/* * Author : Echo * Email : 1666424499@qq原创 2017-10-10 12:07:04 · 893 阅读 · 0 评论 -
Desert King POJ - 2728 (最优比率生成树) 二分
题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路 题目可以写成如下公式:其中E指的是 生成树中的边 R=sigma(a[i]*x[i])/sigma(b[i]*x[i])我们先定义一个函数F(L):=sigma(a[i]*x[i])-L*sigma(b[i]*x[i]),显然这只是对目标式的一个简单的变形。分离参数,得到F(L):=sigma((a[i]-L*b[原创 2017-10-12 20:48:53 · 359 阅读 · 0 评论 -
Remmarguts' Date POJ - 2449 第k短路 SPFA+A*
这是一道巧妙利用了A*算法的一道题A*算法比较开心的地方是在算出最短路的时候,继续算下去会得到次最短路,继续下去是次次最短路,….所有可能的路.在A*算法中 F(x)=G(x)+H(x) 其中G(x) 表示到x后已经走了的距离 H(x) 表示到x后再到终点估计要走多少(本题可以精确算出用SPFA) F(x) 即是走这条路到达的期望距离一个比较给力的剪枝 每个点访问k次就好了,多余的并没有对答原创 2017-10-05 20:38:00 · 367 阅读 · 0 评论 -
Sightseeing POJ - 3463 求最短路和次短路
题意: 给出一个n点m边的有向图,求s到t的最短路和长度为最短路+1的路的种类数; n<=1000,m<=10000; 思路: 1.dijkstra 更新距离时,多加一个坑,放置次短距离. 2.因为多了一个坑,枚举最小值时,多了一倍需要枚举 3.更新距离时,要按照一定的顺序 以免重复更新代码如下/* * Author : Echo * Email : 1原创 2017-10-06 15:36:19 · 359 阅读 · 0 评论 -
图论题目集
杂题POJ 2449 Remmarguts’ Date(中等) AC 题意:经典问题:K短路 解法:dijkstra+A*(rec),方法很多 该题亦放在搜索推荐题中POJ 3013 - Big Christmas Tree(基础) AC 题意:最简单最短路,但此题要过,需要较好的程序速度和,还要注意精度 解法:DijkstraPOJ 3463 - Sightseeing(中等) AC转载 2017-10-06 16:18:28 · 1275 阅读 · 0 评论