摘要: 题目的意思: 一条路径的起点和终点相同,就是一只「环」。有向图的环,可以特地称作​​「有向环」;无向图的环,可以特地称作​​「无向环」。环上每个点都恰好连着两条边。无向环以另一种角度来看,就是两条路径,两条路径的起点相同、终点也相同。习惯规定一个环至少三个点。 藉由Floyd-Warshall Algorithm 的过程,顺手穷举所有可能的最小环。代码如下:#include <stdio.h>#include <string.h>int n;//交叉点的数量int m;//路径的跳数int edge[101][101];//记录每条边的情况,以及使用情况int d[10 阅读全文
posted @ 2013-01-23 10:20 在于思考 阅读(188) 评论(0) 推荐(0) 编辑
摘要: Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所以,我们假设Dis(AB)为节点A到节点B的最短路径的距离,对于每一个节点X,我们检查Dis(AX) + Dis(XB) < Dis(AB)是否成立,如果成立,证明从A到X再到B的路径比A直接到B的路径短,我们便设置Dis(AB) = Dis(AX) + Dis(XB),这样一来,当我们遍历完所有节点X,Dis(AB)中记录的便是A到B的最短路径的距离。代码如下:for ( int i = 0; i < 节点个数; ++i ){ for ( int j 阅读全文
posted @ 2013-01-23 10:14 在于思考 阅读(264) 评论(0) 推荐(0) 编辑