
+图论
文章平均质量分 77
hcbbt
这个作者很懒,什么都没留下…
展开
-
HDU 2544 最短路重刷,四种算法
题意,赤果果的最短路想当年傻傻地用floyd和dijkstra乱刷过,最近好好理解了一下最短路,今天用四种算法实现了一遍。以后可以当模板用。代码:floyd/** Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt* File: hdu2544.cpp* Create Date:原创 2013-11-28 17:10:51 · 1766 阅读 · 0 评论 -
uva 699 The Falling Leaves dfs实现
额,刘汝佳小白里面的配套题目。题目求二叉树同垂直线上结点值的和。可以用二叉树做,挺水的其实。尝试使用dfs实现了:开一个大点的数组,根节点为最中间那点,然后读取时就可以进行和的计算了。代码:#include #include const int maxn = 10000;int n = 500, tmp, num = 1;int cnt[maxn] = {0};bo原创 2013-07-07 01:27:03 · 2073 阅读 · 0 评论 -
uva439 - Knight Moves 国际象棋的跳马
Knight Moves A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the shortest closed tour of knight moves that visits each square of a given set原创 2013-04-24 23:37:59 · 1589 阅读 · 0 评论 -
uva 784 Maze Exploration 染色 搜索水题 DFS
染色问题,其实就是看看图上某一点能扩散多少。用DFS解决,因为BFS不是很熟 =-=。。。以后要多练。提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好。。。代码:#include #include #include char maze[31][81];void dfs(int x, int y) { maze[x][y] = '#'; if原创 2013-07-09 23:43:40 · 1836 阅读 · 0 评论 -
poj 2485 Highways 超级大水题 kruscal
rt,超级大水题,连邻接矩阵都给出来了,求最小生成树的最大边。。。继续用kruscal切掉。。。代码:#include #include using namespace std;const int maxn = 500;struct Edge{ int x, y, w;};Edge e[maxn*maxn];int f[maxn];int v[maxn][maxn]原创 2013-06-13 19:57:31 · 4170 阅读 · 0 评论 -
poj 1789 kruscal水题
继续水水题。。。题目:http://poj.org/problem?id=1789把车看成结点,车之间的距离看作权重就是一个图了,然后求最小生成树。。。的确水题,但看题目花了挺长时间,不知道如果现场遇到这种题目会多蛋疼。。。这题时限2000ms,但用kruscal+sort写出来wa了,换用qsort的话果断超时了,翻了下网上的题解,发现貌似得用const void *传入参数才能原创 2013-06-13 19:20:40 · 1575 阅读 · 0 评论 -
uva10004 Bicoloring 黑白染色问题,DFS
又是水题,最近切题目只能切出水题。。。orz给出一个联通图,要求在个点上染上两种颜色,相邻的点颜色不能相同,看能不能染色成功。用dfs搜索一个点的每条边,着色递归,如果已经染过色的且颜色出现矛盾就退出,用flag优化。由于是联通图,不用考虑孤立的点或图,就比较容易了。据说可以用并查集做,额,估计要用加权。。。代码:#include #include #include char maze[31][81];void原创 2013-07-09 23:52:55 · 2352 阅读 · 0 评论 -
poj 1258 Agri-Net 水题三连发。。。又是kruscal
题目:http://poj.org/problem?id=1258完全模板题。。。和大水题poj 2485 一样。。。目的:增强自信心。。。代码:#include #include using namespace std;const int maxn = 500;struct Edge{ int x, y, w;};Edge e[maxn*maxn];int f[原创 2013-06-13 20:08:19 · 1550 阅读 · 0 评论 -
Uva 10596 - Morning Walk 欧拉回路基础水题 并查集实现【uva数据修改,代码已更新】
题目给出图,要求判断不能一遍走完所有边,也就是无向图,题目分类是分欧拉回路,但其实只要判断度数就行了。一开始以为只要判断度数就可以了,交了一发WA了。听别人说要先判断是否是联通图,于是用并查集并一起,然后判断是否有多个根。用dfs的话就是深搜时标记下,最后看看有没有全部标记。我没用dfs做。代码:#include const int maxn = 201;int f[maxn]原创 2013-07-12 00:46:41 · 1993 阅读 · 2 评论 -
SPOJ 206 BITMAP(BFS+剪枝)
SPOJ 206 BITMAP(BFS+剪枝)ACM题目地址:SPOJ 206 BITMAP题意: 给出一个矩阵,有黑白点,计算每个点离最近的白点的距离,p1=(i1,j1) and p2=(i2,j2),距离d(p1,p2)=|i1-i2|+|j1-j2|.分析: 有剪枝的BFS,如果从黑色的开始进行BFS最近的白色,复杂度是O(n^4),复杂度无法接受。原创 2014-07-26 14:52:43 · 1701 阅读 · 0 评论 -
POJ 3013 Big Christmas Tree(最短路Dijkstra+优先队列优化,SPFA)
POJ 3013 Big Christmas Tree(最短路Dijkstra+优先队列优化,SPFA)原创 2014-07-27 12:17:31 · 2304 阅读 · 0 评论 -
HDU 2767 Proving Equivalences(强连通 Tarjan+缩点)
HDU 2767 Proving Equivalences(强连通 Tarjan+缩点)ACM题目地址:HDU 2767题意: 给定一张有向图,问最少添加几条边使得有向图成为一个强连通图。分析: Tarjan入门经典题,用tarjan缩点,然后就变成一个有向无环图(DAG)了。 我们要考虑的问题是让它变成强连通,让DAG变成强连通就是把尾和头连起来,也就原创 2014-07-30 15:40:46 · 3643 阅读 · 0 评论 -
POJ 1236 Network of Schools(强连通 Tarjan+缩点)
POJ 1236 Network of Schools(强连通 Tarjan+缩点)ACM题目地址:POJ 1236题意: 给定一张有向图,问最少选择几个点能遍历全图,以及最少添加几条边使得有向图成为一个强连通图。分析: 跟HDU 2767 Proving Equivalences(题解)一样的题目,不过多了个问题,其实转化成DAG后就不难考虑了,其实只要选原创 2014-07-30 15:45:35 · 1213 阅读 · 0 评论 -
POJ 3352 Road Construction POJ 3177 Redundant Paths(边双连通图 Tarjan+缩点)
POJ 3352 Road Construction POJ 3177 Redundant Paths(边双连通图 Tarjan+缩点)ACM题目地址: POJ 3352 Road Construction POJ 3177 Redundant Paths题意: 问要添加几条边才能使所给无向图图变成边双连通图。分析: 边连通度:使无向图G不连通的最少原创 2014-08-15 11:22:46 · 1286 阅读 · 0 评论 -
POJ 2942 - Knights of the Round Table(双连通图 Tarjan + 二分判定)
POJ 2942 - Knights of the Round Table(双连通图 Tarjan + 二分判定)ACM题目地址: POJ 2942 - Knights of the Round Table题意: 有N个骑士,给出某些骑士之间的仇恨关系,骑士们开会时会围坐在一个圆桌旁。一次会议能够顺利举行,要满足两个条件:任意相互憎恨的两个骑士不能相邻开会人原创 2014-08-16 12:09:46 · 1376 阅读 · 0 评论 -
Codeforces Round #261 (Div. 2)[ABCDE]
Codeforces Round #261 (Div. 2)[ABCDE]ACM题目地址:Codeforces Round #261 (Div. 2)A - Pashmak and Garden题意: 一个正方形,它的边平行于坐标轴,给出这个正方形的两个点,求出另外两个点。分析: 判断下是否平行X轴或平行Y轴,各种if。代码:原创 2014-08-16 11:24:15 · 2477 阅读 · 0 评论 -
uva572 - Oil Deposits 油矿
Oil Deposits The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and cre原创 2013-04-24 23:32:03 · 1431 阅读 · 0 评论 -
HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,floyd水
题目:1874 http://acm.hdu.edu.cn/showproblem.php?pid=18742444 http://acm.hdu.edu.cn/showproblem.php?pid=2544裸单源最短路径。。。水题。。。用很水的方法,floyd水果,复杂度n^3很吓人啊。。。。慢慢学各种最短路算法,这几题都要再用各种方法水一遍。。。最近考试,伤不起呢。。。原创 2013-06-16 20:25:17 · 2708 阅读 · 0 评论 -
uva 10054 The Necklace 拼项链 欧拉回路基础应用
昨天做了道水题,今天这题是比较水的应用。给出n个项链的珠子,珠子的两端有两种颜色,项链上相邻的珠子要颜色匹配,判断能不能拼凑成一天项链。是挺水的,但是一开始我把整个项链看成一个点,然后用dfs去找,结果超时了。后来瞄了一眼题解发现把颜色当成点,一个珠子就是一条路,这样就能得到一个无向图了,然后判断欧拉回路即可。这题默认是珠子为连通的,所以不需要判断连通性。然后判断节点的度数是否为偶原创 2013-07-13 00:36:40 · 2296 阅读 · 3 评论 -
hdu 4707 Pet 2013年ICPC热身赛A题 dfs水题
题意:linji的仓鼠丢了,他要找回仓鼠,他在房间0放了一块奶酪,按照抓鼠手册所说,这块奶酪可以吸引距离它D的仓鼠,但是仓鼠还是没有出现,现在给出一张关系图,表示各个房间的关系,相邻房间距离为1,而且图中没有回路,每个房间都是联通的,求仓鼠可能出现的房间的数量。很容易的dfs,50000个房间数据量比较大,用数组难以保存,于是用vector储存关系表。遍历过去,遍历过几个房间,那剩下的就是仓鼠原创 2013-09-08 22:44:37 · 2121 阅读 · 0 评论 -
UVA 753 A Plug for UNIX 网络流 插头匹配
题目:有n个不同插口,每种插口有一个名字,现在要为m台设备安排插头,每台设备对应一种插口,当然,你也可以去商店买插口适配器来用,商店有k种适配器,每种适配器能够接受一种的插头,并插在另一种插口上,适配器随便你买。现在问你这样还有多少太设备没法插上电...这题的构图还算不是很复杂,但是我做了半天...因为没有看到适配器可以有多个,我以为只有一个。太坑。建图为 超源点->设备->插头->超汇点原创 2013-12-08 16:31:01 · 2448 阅读 · 0 评论 -
HDU 3549 网络流水题
题意:赤果果的网络流代码:/** Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt* File: hdu3549.cpp* Create Date: 2013-12-04 09:28:46* Descripton: max flow, basic, bfs*/#include原创 2013-12-04 15:28:05 · 1549 阅读 · 0 评论 -
UVa 10400 - Game Show Math 游戏中的数学 dfs+判重
题意:给出一些数字和一个目标数字,要求你在数字间添加+-*/,让表达式能达到目标数字,运算符号的优先级都是一样的。由于数据量很大,本来想用map判重的,结果还是超时了,然后发现彻底的把题意理解错了,我以为数字的位置可以变,还用了全排列,结果人家没说能变换顺序。。。修改后还是超时了 = =。。。果然map是行不通的,太耗时了,由于答案在[-32000,32000]之间,而你到达某一个位置原创 2013-09-01 23:52:40 · 1695 阅读 · 0 评论 -
UVA 193 Graph Coloring 图染色 DFS 数据
题意:图上的点染色,给出的边的两个点不能都染成黑色,问最多可以染多少黑色。很水的一题,用dfs回溯即可。先判断和当前点相连的点是否染成黑色,看这一点是否能染黑色,能染色就分染成黑色和白色两种情况递归,如果不能就单递归白色。代码:#include #include const int maxn = 110;int cas, v, e, M;bool g[maxn][maxn];原创 2013-08-05 01:13:03 · 3356 阅读 · 0 评论 -
HDU 2680 Choose the best route 变形最短路 DIJKSTRA
题意:求多个源点单个汇点的最短路。1000个点,很明显floyd会爆,用dijkstra和bellman ford\spfa应该都行把。。。网上大神说了两种思路:1.新建一个超级源点,和各个源点的距离为0,就跟网络流的超级源点。2.反向从终点进行最短路算法。都是很巧妙的办法,如果遇到多汇点的话,就可以弄个超级汇点就行了。代码:/** Author: ill原创 2013-11-28 19:39:26 · 1548 阅读 · 0 评论 -
UVA 10651 Pebble Solitaire 鹅卵石摆放 记忆化搜索+DFS+记忆化搜索
题意:有12个坑,里面有些鹅卵石,游戏规则:如果有连续的两个鹅卵石,且旁边有个空坑,那可以把旁边的那个鹅卵石跳过空坑中间那个鹅卵石放到空坑里面,而中间那个鹅卵石就被去掉了。只有12个坑,状态为2^12,才4000多个,所以用stl或是位运算去储存都可以,然后DFS。我这里用的是位运算+记忆化搜索,好像没有记忆化也不会超时 = =PS:这就是传说中的状态压缩?代码:/**原创 2013-11-08 09:28:39 · 1778 阅读 · 0 评论 -
uva 331 Mapping the Swaps 求交换排序的map 纯DFS
给出一个序列,每次交换两个数,求有几种交换方法能使序列变成升序。n不大于5,用dfs做。代码:#include #include #include using namespace std;int num[8], ans, n;bool check() { //check if the array is inorder for (int i = 0; i < n -原创 2013-07-24 00:13:39 · 1984 阅读 · 0 评论 -
uva 301 Transportation 铁路公司的阳谋 纯dfs暴力
题目比较难理解。给出铁路的容量和站点数,以及几笔订单,要求算出如何盈利最大。咋一看想贪心,但无法确定是最优解啊。于是用dfs做,就两种状况,选与不选,先开一个每个站点的当前人数数组,假设要选,然后各个站点加上人数判断会不会超人数,不会就进入选择的下一轮dfs,然后把人数减掉,进入不选的dfs。这题据说用数组标记会超时。。。代码:#include const int ma原创 2013-07-23 12:22:12 · 1795 阅读 · 0 评论 -
uva 10344 23 out of 5 凑运算结果 全排列+dfs
五个数三个运算符号,排列之后凑成结果为23,不考虑优先级。很水,数据量也不大,先生成五个数的全排列,用dfs找出结果能否为23即可。代码:#include #include using namespace std;#define RES 23const int maxn = 5;int num[maxn]; bool flag;bool input(void) {原创 2013-07-24 00:04:21 · 1766 阅读 · 2 评论 -
uva 639 Don't Get Rooked 变形N皇后问题 暴力回溯
题目:跟N皇后问题一样,不考虑对角冲突,但考虑墙的存在,只要中间有墙就不会冲突。N皇后一行只能放一个,而这题不行,所以用全图暴力放棋,回溯dfs即可,题目最多就到4*4,范围很小。刚开始考虑放一个棋子后就把其他不能放的地方标记下,然后再暴力,后来发现如果一个点重复标记在去标记时就会把点标成合法的,于是改用放棋子是进行检查,由于数据量小,也不会占用多少时间。之后才想到,在标记时可以用累加原创 2013-07-23 12:11:00 · 2245 阅读 · 3 评论 -
uva 216 Getting in Line 最短路,全排列暴力做法
题目给出离散的点,要求求出一笔把所有点都连上的最短路径。最多才8个点,果断用暴力求。用next_permutation举出全排列,计算出路程,记录最短路径。这题也可以用dfs回溯暴力,但是用最小生成树要小心一点,最小生成树求的是最小连通图,而不是连成一条,不能用Kruscal,Prim算法修改一下也可以使用,改成选点时仅考虑头尾两点即可。代码:#include #includ原创 2013-07-23 11:59:02 · 2110 阅读 · 1 评论 -
uva 110 Meta-Loopless Sorts 用程序写程序 有点复杂的回溯水题
题目要求写一个直接用比较排序的pascal程序,挺有趣的一题。我看题目数据范围就到8,本来以为贪个小便宜,用switch输出。然后发现比较次数是阶乘级别的,8的阶乘也是挺大的,恐怕会交不上去。于是改用回溯法。其实他比较时就是把后面的数一个一个向前比较,然后插到那位前面,继续回溯。else的处理比较麻烦而已,改了好久终于跟标准答案一样了。缩进没有处理,提交上去就ac了,看来o原创 2013-07-23 11:31:45 · 1182 阅读 · 0 评论 -
uva 11234 Expressions 表达式 建树+BFS层次遍历
题目给出一个后缀表达式,让你求从下往上的层次遍历。思路:结构体建树,然后用数组进行BFS进行层次遍历,最后把数组倒着输出就行了。uva过了,poj老是超时,郁闷。代码:#include #include #include const int maxn = 10001;char str[maxn];int p;struct Node { char data; No原创 2013-07-17 01:09:55 · 1315 阅读 · 0 评论 -
Uva 10129 - Play on Words 单词接龙 欧拉道路应用
跟Uva 10054很像,不过这题的单词是不能反向的,所以是有向图,判断欧拉道路。关于欧拉道路(from Titanium大神):判断有向图是否有欧拉路1.判断有向图的基图(即有向图转化为无向图)连通性,用简单的DFS即可。如果图都不连通,一定不存在欧拉路2.在条件1的基础上 对于欧拉回路,要求苛刻一点,所有点的入度都要等于出度,那么就存在欧拉回路了 对于欧拉道路,要求原创 2013-07-13 00:45:14 · 3420 阅读 · 0 评论 -
Codeforces Round #264 (Div. 2)[ABCDE]
Codeforces Round #264 (Div. 2)[ABCDE]ACM题目地址: Codeforces Round #264 (Div. 2)这场只出了两题TAT,C由于cin给fst了,D想到正解快敲完了却game over了... 掉rating掉的厉害QvQ...A - Caisa and Sugar【模拟】题意: Cai原创 2014-08-30 21:17:43 · 3268 阅读 · 0 评论