算法分析:
本题是拓扑排序的典型应用。
由于顶点数量不多,可以采用邻接矩阵来存储图信息,这样算法比较简单,只需要搜索n次,每次把序号最小的入度为0的顶点存储到拓扑序列中就行了。算法思路比较清晰,代码也比较简洁,但时间复杂度和空间复杂度都较高。
另一种方法是采用邻接表存储图信息。由于题目要求输出时编号小的队伍在前,所以在入栈时一定要保证先让序号最小的入度为0的顶点在栈顶,这样根据后进先出的特点,可以把序号最小的顶点存储到拓扑序列中。我采用折半插入排序的方法,把入度为0的顶点按递减序排序,然后对图进行深度优先...
分类:
其他好文 时间:
2014-11-19 16:05:59
阅读次数:
174
数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历Time Limit: 1000MS Memory limit: 65536K题目描述给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)输入输入第一行...
分类:
其他好文 时间:
2014-11-17 19:01:05
阅读次数:
262
一、图的存储结构
1.1 邻接矩阵
图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。
设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:
看一个实例,下图左就是一个无向图。
从上面可以看出,无向图的边数组是一...
分类:
其他好文 时间:
2014-11-16 18:43:59
阅读次数:
291
一.邻接矩阵存储方法 邻接矩阵是表示顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,顶点的顺序依次是(v0,v1,v2,.....vn-1),则G的邻接矩阵A是n阶方阵: 若A是无向图,A[i][j]=1,表示i,j之间有一条边,i到j可达且j到i可达。若A是无向图,A[i][j]=.....
分类:
其他好文 时间:
2014-11-14 22:34:30
阅读次数:
225
此题是最基础的最小生成树的题目,有两种方法, 一个是prim一个是kruskal算法,前者利用邻接矩阵,后者是利用边集数组prim算法的思想是:一个点一个点的找, 先找从第一个点到其他点最小的, 把权值存放到一个lowcost的数组中,然后继续找下一个点,然后更新lowcost数组,注意,这时的lo...
分类:
其他好文 时间:
2014-11-08 19:33:19
阅读次数:
214
给定一个带权的无向连通图,怎样选取一棵生成树,使树上全部边上权的总和为最小,这叫最小生成树.求最小生成树的算法(1)克鲁斯卡尔算法图的存贮结构採用边集数组,且权值相等的边在数组中排列次序能够是随意的.该方法对于边相对照较多的不是非常有用,浪费时间.(2)普里姆算法图的存贮结构採用邻接矩阵.此方法是按...
分类:
编程语言 时间:
2014-11-08 14:54:21
阅读次数:
959
题意:一堆奶牛去某个地方,去了又回,然后求去回和的最大值。
题解:两遍最短路,结束,邻接矩阵存边可以避免建反图。
#include
#include
#include
#define N 1005
#define inf 0x3f3f3f3f
using namespace std;
int map[N][N],n,m,s;
int dist1[N],dist2[N];
bool v...
分类:
其他好文 时间:
2014-11-03 11:35:37
阅读次数:
162
C++实现图的邻接矩阵的创建以及其深度优先遍历和广度优先遍历...
分类:
编程语言 时间:
2014-11-02 09:26:03
阅读次数:
189