类似于二叉树的三种遍历,我们可以基于遍历的模板做很多额外的事情,图的两种遍历,深度和广度模板同样也可以做很多额外的事情,这里举例利用深度优先遍历的模板来进行复制,深度优先中,我们先访问第一个结点,接着访问第一个邻接点,再访问邻节点的邻节点。。。。
class Solution:
# @param node, a undirected graph node
# @return a ...
分类:
编程语言 时间:
2014-07-18 23:11:00
阅读次数:
331
最短路+DP(个人用的SPFA+完全背包)
做了一上午……开始想用SPFA+BFS。但是写了半天越写越乱,放弃了。
就想到了是不是可以当作背包问题(背出病了……)把鞋子可以使用的次数当作背包容量。做完全背包。
先N次SPFA把 各点的最短距离算出来,其实比较适合Floyd。(个人用vector实现伪邻接表,然后SPFA)
然后SPFA更新路径的时候,当鞋子使用次数不...
分类:
其他好文 时间:
2014-07-18 11:18:36
阅读次数:
279
迷宫的最短路径 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy题目: 给定一个大小为N*M的迷宫. 迷宫由通道和墙壁组成, 每一步可以向邻接的上下左右四格的通道移动.请求出从起点到终点所需的最小步数. 请注意, 本题假定从起点一定可以移动到终点.使用宽度优先搜索算法(DFS), 依次遍历迷宫的四个方向, 当有可以走且未走过的方向时, 移动并且步数加...
分类:
编程语言 时间:
2014-07-17 21:02:38
阅读次数:
323
之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。4 51 4 94 3 81 2 52 4 61 3 7第一行两个整数n m。n表示顶点个数(顶点编号为1~n),...
分类:
其他好文 时间:
2014-07-15 09:06:33
阅读次数:
282
天气越来越热,看书还得静得下心啊,今天继续图这一章,概念和算法众多,第一遍看以广度优先的形式为主,以后若要用到具体的算法再去翻“算法导论”吧。下面是学习内容和笔记。图(graph)1.图的存储结构邻接矩阵:顶点数组+边数组(二元);无向图的边数组为对称矩阵,有向图..
分类:
其他好文 时间:
2014-07-13 14:32:18
阅读次数:
214
一条标准的拓扑题解。
我这里的做法就是:
保存单亲节点作为邻接表的邻接点,这样就很方便可以查找到那些点是没有单亲的节点,那么就可以输出该节点了。
具体实现的方法有很多种的,比如记录每个节点的入度,输出一个节点之后,把这个节点对于其他节点的入度去掉,然后继续查找入度为零的点输出。这个是一般的做法了,效果和我的程序一样的。
有兴趣的也可以参考下我这种做法。
#...
分类:
其他好文 时间:
2014-07-12 22:15:05
阅读次数:
308
用邻接矩阵写的。自己慢慢理解吧#include #include using namespace std;#define CC(c) memset(c, 0, sizeof(c))const int maxn=5000;int iscut[maxn], g[maxn][maxn], low[maxn...
分类:
其他好文 时间:
2014-07-11 08:45:04
阅读次数:
206
原题: FZU 2169http://acm.fzu.edu.cn/problem.php?pid=2169这题貌似有两种解法,DFS和SPFA,但是DFS怎么都RE,SPFA也要用邻接表表示边,用向量表示的话会TLE,而且用SPFA有一个异或,就是题目说要沿最短路走到都城,但是SPFA是走最短路去...
分类:
其他好文 时间:
2014-07-09 15:37:19
阅读次数:
226
解法有很多奇葩的地方,比如可以到达终点再跳回去再跳回来(比如有两个点)。。。。反正就是不能有最短路,不过没关系,算法都能给出正确结果
思想:和求最短路上的点套路一样,spfa先正着求一次,再反着求一次最短路,然后枚举每条边找dist_zheng[i] + len + dist_fan[j]的第二小值即可!注意不能用邻接矩阵,那样会MLE,应该用邻接表
/*
poj 3255
...
分类:
数据库 时间:
2014-07-09 11:28:13
阅读次数:
245