1. 图的定义: Graph = (V, E)
表示图由顶点集和边集组成
2. 图的存储结构:常用的主要有 邻接矩阵和邻接表, 还有十字链表和邻接多重表等
邻接矩阵, 如 graph[i][j] = cost , 表示顶点i到顶点j的距离是cost
邻接表 数据结构表示
typedef struct arc
{
int m_adjVertex;
// 邻接顶点的...
分类:
编程语言 时间:
2015-02-07 17:29:25
阅读次数:
266
上一篇写了DFS的邻接矩阵和邻接表的,这篇再写一下BFS的
先大概讲一下BFS , 全名广度优先搜索,没有回溯和探查,逐层遍历,采用队列实现
先访问当前顶点v, 然后访问v的各个未被访问过的邻接顶点,然后在一次访问v的各个邻接顶点的未被访问的邻接顶点
代码实现如下 :
void BFS (Graph &G , int v ) {
int i , w , n = G.Number(); /...
分类:
编程语言 时间:
2015-02-07 17:29:05
阅读次数:
183
实现功能:首行输入N,M,S,T,代表这张图N个点,M条边,源点为S,汇点为T;接下来T行输入个边的出发点、终点和权值;输出最大流原理:sap网络流算法(详见百度百科,个人觉得这个模板已经不错了,虽然本人暂时还未考虑引入邻接表进行优化) 1 var 2 i,j,k,l,m,n,ans,aug,...
分类:
编程语言 时间:
2015-02-06 00:33:37
阅读次数:
237
//---基于邻接表的bfs #include #include #include #include #include #include using namespace std; struct node { int date; struct node *next; ...
分类:
其他好文 时间:
2015-02-05 21:49:13
阅读次数:
162
图
之前学了链表,队列,堆栈等~
然后学树,二叉树~
现在学图,实际上就是结构看起来复杂了一点,点与点之间关系更多了。
图表示
图有两种表示方法:
邻接表邻接链表
这两种表示方法都可以表示所有图,他们之间的区别是所用的空间不一样。邻接表就是用二维数组来表示一个图。所需空间为O(N^2)。(M为边数量, N为点数量)。而邻接链表的表示方法更适合稀疏图(就是边比较少的...
分类:
编程语言 时间:
2015-02-04 00:38:28
阅读次数:
273
上一节我们写了Bellman-Ford算法解决负权边的问题:
邻接表存储图:
n个顶点,m条边。
数组实现邻接表。对每一条边进行1-m编号。用u,v,w三个数组来记录每条边的信息,即u[i],v[i],w[i]表示第i条边是从第 u[i]号顶点到v[i]号顶点且权值为w[i].
first数组的1-n号单元格分别用来存储1-n号顶点的第一条边的编号,初始的时候因...
分类:
其他好文 时间:
2015-02-03 23:09:03
阅读次数:
457
最短路和次短路的结合,之前没有碰到过次短路。为此自己特地把最短路知识又复习了一遍,然后看了其他人的想法,最后才写了出来,具体来说,其实不太难,重点是理解思想。存储的时候采用邻接表。
解法:
用到的数组:dist[i][0]:i到起点的最短路,dist[i][1]:i到起点的严格次短路
visited[i][0],visited[i][1]:同一维的visited数组,标记距离...
分类:
其他好文 时间:
2015-02-01 17:53:44
阅读次数:
245
链接:click here
题意:给出n个河流,m个点,以及每个河流的流量,求从1到m点的最大流量。
思路:最裸的网络流题目 意思就是求从源点到汇点的最大流。
第一道网络流,一边看着书上的介绍,一边敲下代码:
用的是网络流算法ford-fulkerson
题目数据量小,邻接表和邻接矩阵都可以过
代码:
#include //最大流 入门
#include
#inc...
分类:
其他好文 时间:
2015-02-01 17:48:47
阅读次数:
236
对AOV网进行拓扑排序的基本思路是:
从AOV网中选择一个入度为0的顶点输出,然后删去此顶点,并删除以此顶点为尾的弧,继续重复此步骤,直到输出全部顶点或者AOV网中不存在入度为0的顶点为止。
AOV网及邻接表数据结构:
代码:
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h...
分类:
编程语言 时间:
2015-01-26 12:06:08
阅读次数:
252
One way that the police finds the head of a gang is to check people's phone calls. If there is a phone call between A and B, we say that A and B is re...
分类:
其他好文 时间:
2015-01-26 08:49:19
阅读次数:
195