摘要:
【问题描述】 农民John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。 John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个 阅读全文
摘要:
欧拉回路是指不重复地走过所有路径的回路,而哈密尔顿环是指不重复地走过所有的点,并且最后还能回到起点的回路。 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int num[1001]; 5 bool vis[1001 阅读全文
摘要:
一笔画问题 如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。 我们定义奇点是指跟这个点相连的边数目有奇数个的点。对于能够一笔画的图,我们有以下两个定理。 定理1:存在欧拉路的条件:图是连通的,有且只有2个奇点。 定理2:存在欧拉回路的条件:图是连通的,有0 阅读全文
摘要:
邻接矩阵看上去是个不错的选择,首先是容易理解,第二是索引和编排都很舒服但是我们也发现,对于边数相对顶点较少的图,这种结构无疑是存在对存储空间的极大浪费。 因此我们可以考虑另外一种存储结构方式,例如把数组与链表结合一起来存储,这种方式在图结构也适用,我们称为邻接表(AdjacencyList)。 基本 阅读全文
摘要:
DFS 遍历 深度优先搜索是一个递归过程,有回退过程。 对一个无向连通图,在访问图中某一起始顶点u 后,由u 出发,访问它的某一邻接顶点v1;再从v1 出发,访问与v1 邻接但还没有访问过的顶点v2;然后再从v2 出发,进行类似的访问;…;如此进行下去,直至到达所有邻接顶点都被访问过的某个顶点x 为 阅读全文