------------图论算法------------
文章平均质量分 85
yphacker
心之所动,且就随缘去吧
展开
-
hdu 2122 Ice_cream’s world III(最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2122解题思路:求最小生成树。。。注意测试数据里有重边。。。AC代码:#include #include #include #include #include #include #define INF 0xfffffffusing namespace std;c原创 2015-08-12 15:28:55 · 507 阅读 · 0 评论 -
hdu 2066 一个人的旅行(最短路+SPFA)
一个人的旅行题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066解题思路:很裸的一道最短路问题,可以将草儿的家看做0,从草儿家到相邻镇的花费看做0,那么我们就只需要求草儿家到各个目的地的最短路即可,一次SPFA便可解决。AC代码:#include #include #include #include #inc原创 2016-03-24 22:29:16 · 315 阅读 · 0 评论 -
LightOj 1099 Not the Best(次短路)
Not the BestDescriptionRobin has moved to a small village and sometimes enjoys returning to visit one of his best friends. He does not want to get to his old home too quickly, because he lik原创 2016-03-24 22:23:45 · 617 阅读 · 0 评论 -
POJ 3255 Roadblocks(次短路)
题目链接:http://poj.org/problem?id=3255解题思路:Dijkstra算法的思路是依次确定尚未确定的顶点中距离最小的顶点。按照这个思路对算法进行少许修改,就可以简单得求出次短路了。到某个顶点v的次短路要么是到其他某个顶点u的最短路再加上u->v的边,要么是到u的次短路再加上u->v的边,因此所需要求的就是到所有顶点的最短路和次短路。因此,对于每个顶点,我们原创 2015-08-12 10:44:45 · 920 阅读 · 0 评论 -
POJ 1979 Red and Black(搜索)
题目链接:http://poj.org/problem?id=1979解题思路:搜索的水题,第一次用bfs做题,感觉这种水题,练不熟悉的东西最好啦。AC代码:#include#include#includeusing namespace std;int n,m,ans;char maze[25][25];int dx[]={0,-1,0,1},dy[]原创 2014-12-06 04:06:57 · 476 阅读 · 2 评论 -
hdu 1142 A Walk Through the Forest(最短路+记忆化搜索)
A Walk Through the Forest题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1142解题思路:给你n个点,m行关于这些点的联通关系,以及距离,求从1这个点到2这个点之间,下一个点到2这个点比当前点到2这个点的距离要小的路径的条数。。。AC代码:#include #define INF 0x3f原创 2016-04-04 20:26:43 · 274 阅读 · 0 评论 -
LightOJ 1356 Prime Independence(素数筛选法+最大独立集)(Hopcroft-Carp算法)
Prime Independence解题思路:题目大意:定义素数独立集为一个整数集(不一定全是素数),该整数集合中的任意两个a和b,如果存在a=b*prime的情况(prime为素数),则视为该情况为"冲突"。独立集即不存在冲突的集合。算法思想:首先看到独立集就应该想到二分图,既然是二分图,每个数为一个结点,哪些是U哪些是V呢?自然而然地每个数num进行素因数分解,原创 2016-02-19 11:43:02 · 1548 阅读 · 1 评论 -
POJ 1273 Drainage Ditches(最大流模板)
题目链接:http://poj.org/problem?id=1273解题思路:题目大意:给你有m个池塘(从1到m开始编号,1为源点,m为汇点)及n条水渠,然后给你这n条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量。算法思想:最大流模板题。。。AC代码(增广路算法Edmonds_Karp):#include #include #i原创 2015-09-24 17:32:58 · 308 阅读 · 0 评论 -
hdu 5441 Travel(离线操作+并查集路径压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5441解题思路:题目大意:给你n个顶点,m条边的一个无向图,q个询问。对于每个询问x,将图中所有小于x的边拿出里啊,组成另外一个图,将一个点a到能到另一个点b记为有序对, 然后让你找出这个图里面有多少个这样的有序对。算法思想:当时比赛的时候思维短路了。。。这题肯定是先将所原创 2015-09-14 12:57:14 · 476 阅读 · 0 评论 -
hdu 3631 Shortest Path(最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3631解题思路:题目大意:有向图(three integers (x, y, c): initial vertex (x), terminal vertex (y)),有重边。选中一些点,在这些点里面求两点的最短路。有2个操作,操作 "0" 表示标记 x ,如果x之前已经被标记,输出原创 2015-09-11 17:21:44 · 428 阅读 · 0 评论 -
hdu 5001 Walk(概率dp+搜索,矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5001解题思路:题目大意:给你一张无向的连通图,一共有n个点,m条边,随机从任意一点开始走,在任意一个点走向相连的点的概率都是相同的,一共走d步,分别求出每个点不在这个路径中的概率。算法思想:1.枚举每个要经过的点,然后进行状态转移,状态为dp[i][j],状态表示当前在j的原创 2015-09-07 22:38:56 · 398 阅读 · 1 评论 -
hdu 1839 Delay Constrained Maximum Capacity Path(最短路+二分)
Delay Constrained Maximum Capacity Path题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1839解题思路:题目大意:有n个点,点1为珍贵矿物的采矿区, 点n为加工厂,有m条双向连通的边连接这些点。走每条边的运输容量为C,运送时间为D。他们要选择一条从1到n的路径运输, 这条路径的运输总时原创 2016-03-24 22:36:26 · 298 阅读 · 0 评论 -
hihoCoder 1121 二分图一•二分图判定
#include #include #include #include #include using namespace std;int n,m;vector v[10005];int vis[10005];bool bfs(){ int flag = 0; memset(vis,-1,sizeof(vis)); queue q; for(in原创 2015-08-04 08:45:39 · 910 阅读 · 0 评论 -
POJ 1182 食物链(并查集)
题目链接:http://poj.org/problem?id=1182解题思路:对于每只动物i创建3个元素i-A,i-B,i-C,并用这3*N个元素建立并查集。这个并查集维护如下信息:(1)i-x表示“i属于种类x”。(2)并查集里的每一个组表示组内所有元素代表的情况都同时发生或不发生。例如,如果i-A和j-B在同一个组里,就表示如果i属于种类A那么j一定属于种类B,如原创 2015-08-12 16:09:36 · 434 阅读 · 0 评论 -
POJ 3723 Conscription(最小生成树)
题目链接:http://poj.org/problem?id=3723解题思路:把人看做顶点,关系看做边,这个问题就可以转化为求解无向图中最大权森林问题。最大权森林问题可以通过把所有边权取反之后用最小生成树的算法求解。AC代码:#include #include #include using namespace std;const int maxn = 50005原创 2015-08-12 16:24:04 · 538 阅读 · 0 评论 -
POJ 3169 Layout(差分约束)
题目链接:http://poj.org/problem?id=3169解题思路:AC代码:#include#include#include#include#include#define INF 0xfffffffusing namespace std;const int V=1010;const int E=20010;int n,ml,md;in原创 2015-08-12 16:36:22 · 1032 阅读 · 0 评论 -
hdu 5294 Tricks Device(最短路+网络流(最小割))
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294解题思路:n个点,m条边,构建有权无向图。求出删去最少条边数可以使得图没有最短路径,以及删出最多条边使得图仍有最多条路径。官方题解:最短路寻找道路边数最少的最短路,总边数减去最少条数为第二个问答案。根据在最短路上的边构造每条边流量为1的新图,对新图最大流为第一问原创 2015-08-14 09:25:44 · 669 阅读 · 0 评论 -
HDU 2544 最短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544解题思路:虽然暑假做了很多最短路径的问题,但是一阵子没碰,多少还是有点生疏了,于是整理了三种有关最短路径的算法,供大家参考。dijkstra算法以及floyd算法如果不熟悉的人,请先看看这个大牛的博客:http://blog.csdn.net/fengchaokobe/articl原创 2014-12-04 09:33:02 · 383 阅读 · 0 评论 -
hdu 1845 Jimmy’s Assignment(最大二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1845解题思路:最大二分匹配,模板题,其实题目说 This graph is undirected, has N vertices and each vertex has degree 3. Furthermore, the graph is 2-edge-connected。就能得到答原创 2015-08-15 15:58:33 · 528 阅读 · 0 评论 -
POJ 2485 Highways(最小生成树)
题目链接:http://poj.org/problem?id=2485解题思路:英语不好,果然是硬伤。。。you should output a line contains an integer, which is the length of the longest road to be built such that all the villages are connecte原创 2015-08-15 16:43:55 · 433 阅读 · 0 评论 -
hdu 1217 Arbitrage(最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217解题思路:最短路径,不过这里是乘法、而且还是求最大的。注意:因为是乘法,被乘数可以大于1、也可以小于1,就等效于边的权值,每条边的权值可以为正数、也可以为负数。。。所以不能用dijkstra。。。AC代码:#include #include #include原创 2015-08-15 17:13:06 · 420 阅读 · 0 评论 -
hdu 3635 Dragon Balls(带权并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3635解题思路:题目大意:初始时,有n个龙珠,编号从1到n,分别对应的放在编号从1到n的城市中。给你2种操作:T A B,表示把A球所在城市全部的龙珠全部转移到B城市。(第一次时,因为A球所在的城市只有一个球,所以只移动1个,如果有多个,则全部移动)。Q A,表示查询A。原创 2015-08-15 17:21:49 · 485 阅读 · 0 评论 -
2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest(K. King's Rout)(拓扑排序)
King's Rout题目链接:http://codeforces.com/gym/100792/problem/K解题思路:将顺序反过来,然后再求拓扑排序。注意:最后将结果倒着输出。AC代码:#include using namespace std;const int N = 200005;int n,m;int indegree[N];priority_原创 2016-06-02 21:11:36 · 696 阅读 · 0 评论 -
hdu 5424 Rikka with Graph II(哈密顿路判定)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5424解题思路:题目大意:给一个n个点,n-1条边的图,判定是否存在哈密顿路。官方题解:如果图是联通的,可以发现如果存在哈密顿路径,一定有一条哈密顿路径的一端是度数最小的点,从哪个点开始直接DFS搜索哈密顿路径复杂度是 O(n)O(n)的。要注意先判掉图不连通的情况。原创 2015-08-31 09:49:12 · 523 阅读 · 0 评论 -
hihoCoder 1127 二分图三·二分图最小点覆盖和最大独立集
#include #include #include using namespace std;int n,m;int edge[1005][1005];int vis1[1005];int vis2[10005];bool search_path(int u){ for(int v = 1; v <= n; v++){ if(edge[u][v] &&原创 2015-08-04 10:30:31 · 509 阅读 · 0 评论 -
POJ 1679 The Unique MST( 判断最小生成树是否唯一)
题目链接:http://poj.org/problem?id=1679解题思路:1.首先求出原图的最小生成树,并将此生成树的每条边作标记;2.每次只删除其中一条边,再求最小生成树,观察结果与最开始的是否一致,是则不唯一;3.当所有被标记的边都被删过一次后,如果没有一次结果与最开始的一致,则是唯一的。AC代码:#include #include #include原创 2015-08-24 22:30:41 · 586 阅读 · 0 评论 -
POJ 2349 Arctic Network
题目链接:http://poj.org/problem?id=2349解题思路:最小生成树问题,但是理解起来,非常费解。。。用prim算法求解:先求出每两个顶点之间的距离,(注意:是double类型的),然后用普里姆算法(Prim)求最小生成树。由于无线电的数目已给出m,需要把最小生成树分成m份,即删除m-1条边,得到m个连通分量。关键是删除哪些边呢,题目要求最小的D,故把原创 2015-08-23 21:46:40 · 371 阅读 · 0 评论 -
hdu 1385 Minimum Transport Cost(最短路,floyd打印字典序路径)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1385解题思路:题目大意:有N个城市,然后直接给出这些城市之间的邻接矩阵,矩阵中-1代表那两个城市无道路相连,其他值代表路径长度。如果一辆汽车经过某个城市,必须要交一定的钱(可能是过路费)。现在要从a城到b城,花费为路径长度之和,再加上除起点与终点外所有城市的过路费之和。原创 2015-08-23 21:12:28 · 624 阅读 · 0 评论 -
HDU1885——Key Task
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1885Key Task题目大意:*代表起点,X代表终点,B,Y,R,G分别代表四个门,b,y,r,g分别代表四把钥匙,只有拿了钥匙,才能开相应的门。问你最后能否达到终点,能输出最小步数,不能输出“The poor student is trapped!”。解题思路:对于四把钥原创 2015-05-07 09:00:56 · 347 阅读 · 0 评论 -
POJ3259——Wormholes
题目链接:http://poj.org/problem?id=3259Wormholes题目大意:给你n个点,m条双向联通的权值为正的路,和w条单向联通权值为负的路。让你判断是否存在负环。用队列实现,判断是否存在负环。#include#include#include#include#define INF 0xfffffffusing namespace std;c原创 2015-05-07 09:44:14 · 327 阅读 · 0 评论 -
HDU3371——Connect the Cities
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3371Connect the Cities题目大意:给你n个点,再给你m条路的花费(要修的),再给你k条路是已经修好的,然后让你求,将所有点联通,至少还需要多少花费。实质上就是要你求一条最小生成树,已经修好的路,花费置为0,然后用prim算法求解即可!#include#in原创 2015-05-06 09:42:24 · 296 阅读 · 0 评论 -
2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛——Mine Number
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2410Mine Number题目意思很简单,玩过扫雷的人都能秒懂,可是实施起来,却不容易呀!!!首先对第一行进行枚举,不冲突即可,其他行:上一行为0,此行不能放雷,上一行为1,此处进行枚举,不冲突即可。而且有几个很坑的地方原创 2015-04-28 22:09:02 · 641 阅读 · 0 评论 -
2010年山东省第一届ACM大学生程序设计竞赛——Emergency
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2155Emergency题目大意:给你一个有向图,然后给你q个操作,0代表城堡(点)被占领,(未被占领时,其他点是不能经过该点的,只有被占领了,才能经过该点),如果城堡已经被占领,就输出该城堡被占领,1代表输出x和y的最短原创 2015-04-28 21:43:11 · 431 阅读 · 0 评论 -
2010年山东省第一届ACM大学生程序设计竞赛——Fairy tale
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2156Fairy tale题目大意:人可以动,宝藏也可以动,相当于一个追击问题,不过,人每秒可以走两步:1.按照地图来走(如果超出地图的范围,则可以不移动),2.按照自己的意愿来走(选取距离宝藏近的方向移动),宝藏只能按照原创 2015-04-28 21:55:44 · 596 阅读 · 0 评论 -
HDU5142 NPY and arithmetic progression && BestCoder Round #23 1002
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5143解题思路:BestCoder官方题解:可以发现等差数列只有(123,234,1234和长度>=3的常数列),如果选择非常数列(123,234,1234)数量大于等于3,可以变为三个或4个常数列,例如(123,123,123)变为(111,222,333)。所以从0-2枚举选择非原创 2014-12-27 16:44:24 · 684 阅读 · 0 评论 -
POJ 1988 Cube Stacking(带权的并查集)
题目链接:http://poj.org/problem?id=1988解题思路:有很多个stack,一开始每个stack里面都有一个cube。然后支持两种操作:1.move x y: 将x所在的stack移动到y所在stack的顶部;2.count x:查询在x所在stack中,在x之下的cube的个数。算法思想:带权的并查集。设两个权值cnt[x],d原创 2015-08-24 22:08:32 · 493 阅读 · 0 评论 -
POJ 3026 Borg Maze(BFS+最小生成树)
题目链接:http://poj.org/problem?id=3026解题思路:感觉这题好坑呀,如果不是看了这封博客,不知道还会哭多久。。。http://blog.csdn.net/lyy289065406/article/details/6645991题目大意:在一个y行 x列的迷宫中,有可行走的通路空格’ ‘,不可行走的墙’#’,还有两种英文字母A和S,现在从S出发,要原创 2015-08-27 14:47:17 · 293 阅读 · 0 评论 -
hihoCoder 1114 小Hi小Ho的惊天大作战:扫雷·一
#include #include #include using namespace std;const int N = 100005;int mine1[N],mine2[N];int val[N];int ans1[N],ans2[N];int n;bool flag1,flag2;void solve(){ flag1 = flag2 = true; mine原创 2015-08-03 20:46:51 · 844 阅读 · 0 评论 -
hihoCoder 1122 二分图二•二分图最大匹配之匈牙利算法
#include #include #include using namespace std;int n,m;int edge[1005][1005];int vis1[1005];int vis2[10005];bool search_path(int u){ for(int v = 1; v <= n; v++){ if(edge[u][v] &&原创 2015-08-04 09:27:44 · 509 阅读 · 0 评论 -
hihoCoder 1109 最小生成树三·堆优化的Prim算法
#include #include #include #include #include using namespace std;const int N = 100005;const int M = 1000005;struct Edge{ int u,v,w;}edge[M];struct node{ int x,w; bool operator原创 2015-08-03 19:18:20 · 1912 阅读 · 0 评论