图论
文章平均质量分 77
李总LKC
这个作者很懒,什么都没留下…
展开
-
POJ 1979 Red and Black (深度优先遍历)
Red and Black Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22768 Accepted: 12286 Description There is a rectangular room, covered with square tiles. Eac原创 2014-10-02 22:51:05 · 1089 阅读 · 0 评论 -
图的邻接矩阵存储结构
如上图,我们可以把v0标记为0,v1标记为1。。。。 并把联通的2点权值全设置为1,那么可以用邻接矩阵(右图)来表示 概念解析: 第一个邻接顶点: 我们以vo为例,第一个邻接顶点为V1(其实也可以使V3,只不过考虑计算机的存储顺序,我们找邻接顶点,一般是从v0扫描到v3,所以我们先在内存中扫描到v1) 下一个邻接顶点: 我们以v0为例,下一个邻接顶点就是v3(同样,其实也可以使V1,只原创 2014-10-02 23:34:36 · 1414 阅读 · 0 评论 -
如何实现深度优先遍历(DFS)
DFS实现步骤如下: ①访问顶点V,并标记V已经访问 ②查找V的第一个邻接顶点w ③若W存在,则继续执行,否则算法结束 ④若W未被访问,则使用DFS递归访问w ⑤查找V的下一个邻接节点,并记为W,转到步骤③ 对上图进行DFS,则访问顺序为 A B D C E 使用伪代码如下: Vector G[maxn] int vis[maxn] void dfs(int u)原创 2014-10-02 23:41:59 · 1083 阅读 · 0 评论 -
如何实现广度优先遍历(BFS)
BFS过程: 一:访问顶点V,并标记V为已经访问 二:顶点V入队列 三:如果队列非空,进行执行,否则算法结束 四:出队列取得对头顶点u,如果顶点未被访问,就访问该顶点,并标记该顶点为已经访问 五:查找u的第一个邻接节点w 六:如果w不存在,则转到步骤三,否则循环执行 a. 如果w没有被访问过,则先把w入队列 b.查找顶点u的下一个邻接节点,记为w,并转到步骤六 上图使用B原创 2014-10-03 00:17:18 · 1258 阅读 · 0 评论 -
用BFS解决迷宫问题
在一个n*n的矩阵里走,从原点(0,0)开始走到终点(n-1,n-1),只能上下左右4个方向走,只能在给定的矩阵里走,求最短步数。n*n是01矩阵,0代表该格子没有障碍,为1表示有障碍物。 int mazeArr[maxn][maxn]; //表示的是01矩阵 int stepArr[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; //表示上下左右4个方向原创 2014-10-03 06:28:56 · 2658 阅读 · 4 评论