算法题解-图论
Jarily
这个作者很懒,什么都没留下…
展开
-
HDU2612(Find a way)搜索-两次BFS
/*****************************************************题目大意:Y和M要在KFC约会,地图上有多个KFC,求在哪个KFC两人所走总距离最短;算法思想:两个人到同一点的和最短,分别以两个人为起点,BFS遍历整个图;计算出到每个KFC的最短距离,然后枚举所有的KFC,求出最小的代价即可;************************原创 2013-04-13 18:41:54 · 1307 阅读 · 0 评论 -
PKU1511(Invitation Cards)最短路径-邻接表+SPFA算法
/******************************************************题目大意:弱菜英语又是渣渣,题意是对着测试数据连猜带蒙出来的;在一个有向图中,要求顶点1到其他的所有顶点往返的总共的最小花费;另外给出的数据量略大,顶点数和边数都是1000000的范围;算法分析:这是一个最短路径问题;由于数据范围很大,用邻接矩阵和dijkstra很可能超时原创 2013-04-13 19:25:52 · 1517 阅读 · 0 评论 -
HDU4547(CD操作)LCA+Tarjan离线算法
/* *题目大意: *题目为天朝文字,不多说; * *算法思想: *题目很明显要求的是一个LCA问题; *即询问从A到B的需要的步数,即首先从A到达A和B的最近公共祖先需要的步数+1就OK了; * *算法步骤: *由于是有向图,所以开始可以用一个数组ind记录每个顶点的入度; *如果该顶点的入度为0,则可以当做根节点,利用dfs求出树中每个顶点的深度d; *则从u到v的步数a原创 2013-06-05 15:24:47 · 1980 阅读 · 0 评论 -
HDU4612(Warm up)2013多校2-图的边双连通问题(Tarjan算法+树形DP)
图的边双连通Tarjan算法+树形DP原创 2013-07-29 16:43:08 · 1640 阅读 · 1 评论 -
HDU4607(Park Visit)2013多校1-树的直径
树的直径:树上的最长简单路径;原创 2013-07-25 11:03:24 · 1811 阅读 · 0 评论 -
割点和桥
割点和桥原创 2013-10-01 15:04:12 · 2319 阅读 · 0 评论 -
PKU2186(Popular Cows)+强连通分支Tarjan算法+缩点
强连通分支Tarjan算法+缩点原创 2013-10-01 16:41:26 · 1708 阅读 · 0 评论 -
HDU2454判定简单图
判定简单图,Havel定理原创 2012-11-28 13:16:41 · 1883 阅读 · 1 评论 -
HDU4635(Strongly connected)Tarjan算法,强连通+缩点
强连通+缩点原创 2013-10-30 14:25:49 · 2294 阅读 · 0 评论 -
HDU4280(Island Transport )最大流SAP算法+当前弧优化
最大流SAP算法+当前弧优化原创 2013-11-23 15:33:50 · 2234 阅读 · 0 评论 -
PKU3463(Sightseeing)-最短路和次短路问题,dijkstra算法
最短路和次短路问题,dijkstra算法原创 2013-09-26 13:05:47 · 3618 阅读 · 0 评论 -
HDU2767(Proving Equivalences)-有向图的强连通问题+Tarjan算法
有向图强连通分量的Tarjan算法原创 2013-07-22 10:26:28 · 1824 阅读 · 0 评论 -
PKU3352(Road Construction)-图的双连通,桥
双连通,桥原创 2013-10-01 15:55:16 · 1574 阅读 · 0 评论 -
PKU1659(Frogs' Neighborhood)-简单图的判定+构造,Havel定理
简单图的判定+构造,Havel定理原创 2013-09-25 17:03:34 · 2154 阅读 · 0 评论 -
PKU3013(Big Christmas Tree)-最短路径-SPFA
最短路径-SPFA原创 2013-09-25 14:10:34 · 1481 阅读 · 0 评论 -
PKU3522(Slim Span)-求差值最小的生成树
要求一颗生成树,使得其最大边与最小边的差值是所有生成树中最小原创 2013-09-25 13:46:20 · 1430 阅读 · 0 评论 -
HDU3986(Harry Potter and the Final Battle)-枚举最短路径+SPFA
枚举最短路径+SPFA原创 2013-11-18 21:16:57 · 1642 阅读 · 0 评论 -
PKU3177(Redundant Paths)-双连通,桥
图的边双连通,桥原创 2013-10-01 16:00:43 · 1396 阅读 · 0 评论 -
流量有上下界的网络的最大流和最小流算法
/************************************************************算法引入:基础的网络流的每一条弧都对应一个弧容量c(u,v)>=0;而有上下界的网络流中,每条弧对应两个权值b(u,v)和c(u,v),即为弧流量的下界和上界;很显然基础的网络流中为其特殊情况,即b(u,v)==0的时候;算法分析:(1)最大流:当b(u,v原创 2013-02-19 15:38:58 · 7467 阅读 · 1 评论 -
带权的二分图的最优匹配KM算法
/*********************************************************算法引入:给定一个完全二分图G=(X∪Y,X×Y),其中边(x,y)有权w(x,y);要找一个从X到Y具有最大权和的匹配M,即为二分图的最优匹配问题;KM(Kuhn_Munkras)算法求的是完备匹配下的最大权匹配;算法思想:KM算法是通过给每个顶点一个标号(叫做顶标)原创 2013-02-27 13:34:58 · 4434 阅读 · 1 评论 -
树上两点的最近公共祖先-Tarjan_LCA离线算法
/* *算法引入: *树上两点的最近公共祖先; *对于有根树的两个结点u,v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u,v的祖先且x的深度尽可能大; *对于x来说,从u到v的路径一定经过点x; * *算法思想: *Tarjan_LCA离线算法; *Tarjan算法基于dfs的框架,对于新搜到的一个结点,首先创建由这个结点构成的集合,再对当前结点的每个子树进行搜索;原创 2013-05-19 21:19:28 · 9093 阅读 · 3 评论 -
网络最大流的三种基础算法
#include#include#include#include#includeusing namespace std;const int N = 10;const int MAX = 0xfffffff;int n,m;//n是点数,m是边数int source, sink;//source为源点,sink为汇点/****************************原创 2012-11-28 16:26:23 · 1478 阅读 · 0 评论 -
UVA10766(Organising the Organisation)生成树计数-Matrix-Tree定理
/* *题目地址: *http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1707; * *题目大意: *Jimmy在公司里负责人员的分级工作,他最近遇到了一点小麻烦; *为了提高公司工作的效率,董事会决定对所有的员工重新分级; *即除了一个总经理原创 2013-05-08 20:19:40 · 2352 阅读 · 0 评论 -
K最短路问题(单源点最短路径+A*算法)
/* *算法引入: *在单源点最短路径问题中,实际运用时还需知道最短路径外,次短路或者第三短路; *即要知道多条最短路,并排出其长度增加的顺序,即为K最短路问题; * *算法思想: *单源点最短路径+高级搜索A*; *A*算法结合了启发式方法和形式化方法; *启发式方法通过充分利用图给出的信息来动态地做出决定而使搜索次数大大降低; *形式化方法不利用图给出的信息,而仅通过数学的形原创 2013-05-01 14:27:58 · 11789 阅读 · 8 评论 -
PKU1679(The Unique MST)判断最小生成树的唯一性-次小生成树
/* *题目大意: *给出一个连通无向图,判断它的最小生成树是否唯一; *如果唯一,输出生成树的大小,否则输出"Not Unique!"; * *算法思想: *本题可以尝试求与最小生成树权值相等的树是否存在; *但是更好的思路是直接求次小生成树,如果次小生成树等于最小生成树; *则说明最小生成树不唯一,否则最小生成树一定是唯一的; * *次小生成树的求法详见http://blo原创 2013-05-10 20:43:02 · 4081 阅读 · 0 评论 -
BZOJ1016([JSOI2008]最小生成树计数)Kruskal+Matrix_Tree定理
/* *题目地址: *http://www.lydsy.com/JudgeOnline/problem.php?id=1016 * *题目大意: *给出一个简单无向加权图,求这个图中有多少个不同的最小生成树; *由于不同的最小生成树可能很多,所以只需输出方案数对31011的模就可以了; * *算法思想: *Kruskal+Matrix_Tree定理; * *先按照任意顺序对等原创 2013-05-08 21:13:10 · 5384 阅读 · 0 评论 -
生成树计数-Matrix-Tree定理
/* *算法引入: *给定一个无向图G,求它生成树的个数t(G); * *算法思想: *(1)G的度数矩阵D[G]是一个n*n的矩阵,并且满足:当i≠j时,dij=0;当i=j时,dij等于vi的度数; *(2)G的邻接矩阵A[G]是一个n*n的矩阵,并且满足:如果vi,vj之间有边直接相连,则aij=1,否则为0; *定义图G的Kirchhoff矩阵C[G]为C[G]=D[G]-A原创 2013-05-08 17:12:24 · 5652 阅读 · 0 评论 -
次小生成树
/* *算法引入: *设G=(V,E,w)是连通的无向图,T是图G的一棵最小生成树; *如果有另一棵树T1,满足不存在树T’,ω(T’)<ω(T1),则称T1是图G的次小生成树; * *算法思想: *邻集的概念:由T进行一次可行交换得到的新的生成树所组成的集合,称为树T的邻集,记为N(T); *设T是图G的最小生成树,如果T1满足ω(T1)=min{ω(T’)|T’∈N(T)},则T原创 2013-05-04 15:37:59 · 4551 阅读 · 0 评论 -
PKU1062(昂贵的聘礼)单源点最短路径-Dijkstra算法
/******************************************************题目大意:看着比英文还蛋疼的中文题;每个物品看成一个节点,酋长的允诺也看作一个物品,且始终为第一个结点;如果一个物品加上金币可以交换另一个物品,则这两个节点之间有边,权值为金币数,求所有节点中到第一个节点的最短路;算法分析:最短路问题,不过因为存在着等级的差异所以需要枚举;原创 2013-04-12 22:23:05 · 1019 阅读 · 0 评论 -
HDU1245(Saving James Bond)最短路径-Floyd
/*********************************************题目大意:有一个100*100的正方形湖,湖中间有一个直径为15的圆形小岛;有n个点随机分布在这个正方形中;一个人要从小岛上跳出湖外,可以跳跃在这些点上;人每一步能跳的最大距离为d;求能跳出湖外所需的最小的跳跃距离和步数;算法分析:首先计算每个坐标两两间的距离;然后找出所有能从小岛上一步原创 2013-04-10 18:29:36 · 1776 阅读 · 0 评论 -
最小k度限制生成树
/*************************************************算法引入:最小k度限制生成树,就是指有特殊的某一点的度不能超过k时的最小生成树;如果T是G的一个生成树且dT(v0)=k,则称T为G的k度限制生成树;G中权值和最小的k度限制生成树称为G的最小k度生成树;算法思想:设特殊的那点为v0,先把v0删除,求出剩下连通图的所有最小生成树;假如原创 2013-04-09 20:48:29 · 4171 阅读 · 1 评论 -
最小费用最大流算法
/***************************************************算法引入:任何容量网络的最大流流量是唯一且确定的,但是它的最大流f并不是唯一的;既然最大流f不唯一,因此,如果每条弧上不仅有容量限制,还有费用r;即每条弧上有一个单位费用的参数,那么在保证最大流的前提下;还存在一个选择费用最小的最大流问题,即为最小费用最大流问题;算法思想:寻找最原创 2013-02-26 12:56:23 · 28445 阅读 · 7 评论 -
HDU2768二分图求最大独立集
/*************************************************************题意:给你n只猫,m只狗,p个人;每个人都有一只喜欢的和一只讨厌的动物;如果去掉某人讨厌的并且留下他喜欢的,则这人是高兴的,让你求出最多高兴人数。算法:利用二分匹配求最大独立集最大独立集=节点数-最大匹配数建图:喜欢猫的人左边,喜欢狗的人右边二分图初始化原创 2012-11-24 21:39:59 · 1149 阅读 · 0 评论 -
最小生成树计数-Kruskal+Matrix_Tree定理
/* *算法引入: *给定一个含有N个结点M条边的无向图,求它最小生成树的个数t(G); * *算法思想: *抛开“最小”的限制不看,如果只要求求出所有生成树的个数,是可以利用Matrix-Tree定理解决的; *Matrix-Tree定理此定理利用图的Kirchhoff矩阵,可以在O(N3)时间内求出生成树的个数; * *kruskal算法: *将图G={V,E}中的所有边按照原创 2013-05-08 20:55:43 · 10739 阅读 · 0 评论 -
Floyd算法求最小环
/* *算法引入: *求一个图G中的最小环路的朴素算法为:每次找到一条边,删除了求这两点之间的最短路径; *若能求出,则这条最短路径与原来的边构成一个环,不过时间复杂度略高; * *算法思想; *Floyd算法是按照顶点的编号增加的顺序更新最短路径的; *如果存在最小环,则会在这个环中的点编号最大的那个点u更新最短路径之前发现这个环; *即当点u被拿来更新i到j的最短路径的时候,可原创 2013-05-01 17:21:50 · 8605 阅读 · 0 评论 -
PKU3259(Wormholes)判定负权环-Bellman_Ford算法
/****************************************************题目大意:John的农场里N块地,地之间有M条路,W个虫洞;虫洞是一条单向路,会在你离开之前把你传送到目的地;就是当你过去的时候时间会倒退T秒(可以理解为负权边),要求会不会在从某块地出发后又回来,看到了离开之前的自己;即看图中有没有负权环,有的话就输出YES,没有的话就输出NO;原创 2013-04-13 20:54:30 · 2469 阅读 · 0 评论 -
ZJU2314(Reactor Cooling)求没有源点和汇点的流量有上下界的可行流
/******************************************题目大意:给出一个流量有上下界的容量网络,没有源点和汇点;求出满足流量平衡条件的可行流;算法思想:构建伴随网络G2:(1)增加附加源点s和附加汇点t;对于每一个点统计流入的总下限sum1,和流出的总下限sum2;求出sum1-sum2,如果大于0则与源点相连,容量为sum1-sum2;如果小于原创 2013-04-10 19:48:16 · 1385 阅读 · 0 评论 -
PKU3613(Cow Relays)-K步最短路,矩阵连乘
K步最短路,矩阵连乘原创 2013-09-27 12:56:26 · 2047 阅读 · 0 评论