摘要: 这个题让我做得有些纠结。将我的做题过程思路写出来。 这是一道深度优先搜索的题目,目的是来求出无线连通图的割点。首先,要明白什么是割点,割点:在一个连通图中,如果去掉了某个点和所有与这个点相连的边后,是图分成了两个部分,变成了一个不连通的图。那么这个点就是割点。还有,就是如何来求割点? 搜索深度:如果节点k的搜索深度为j,则节点k为第j个搜索到的节点。 若有k的儿子为i,我们定义AnceDeep[i]为与结点i相连接的所有节点最小的搜索深度,deep[k]为k的搜索深度(时间戳),那么k为割点当且仅当k满足(1)(2)中的一个: (1) 若k为深搜树的根Root,当且仅当k的儿子数(分支数... 阅读全文
posted @ 2012-11-18 21:57 简单地快乐 阅读(319) 评论(0) 推荐(1) 编辑
摘要: 这是一道bfs的习题,比较经典,以前也没做过bfs的题,第一次做,记录下思路。 首先,应该弄明白的是BFS要通过队列来实现,我向来不喜欢做题时自己再将什么声明队列,出队列,入队列的函数给写出来,感觉有点麻烦。这次我才发现有queue、stack的这种头文件,可以直接使用。第一步将起点位置加入队列,如果当队列为空还没有访问到目标位置就代表访问不到目标位置了。 其次,这道题求的是最少的步数,一旦搜索到目标位置,就立马停止搜索,输出步数。那么这个步数怎么来算呢??如何避免访问已经访问过的位置呢??这里建立一个二维数组,存放每一个位置的状态,-1表示没有访问过,其他的值代表访问这个位置的时候已经走过. 阅读全文
posted @ 2012-11-18 14:07 简单地快乐 阅读(465) 评论(0) 推荐(0) 编辑