此实现利用两个数组first[],  ext[] 邻接表。 核心代码: void bellman_ford(int orig) { int k; que[tail++] = orig; book[orig] = 1; while(head < tail){ k = first[que[head]]; while(k != -1){ if(dist[edge[k].v] > dist[edge[k].u] + edge[k].w){ dist[edge[k].v] = dist[edge[k].…

2017年8月14日 0条评论 6点热度 阅读全文

这个能够判断是否有负权边,但是不能计算有负圈的图,也就是说可以有负的权边,但是不能含有负权的环。 适用条件: 1.单源最短路径(从源点s到其它所有顶点v); 2.有向图&无向图(无向图可以看作(u,v),(v,u)同属于边集E的有向图);(如1 2  -3, 2 1 -3 两次输入 无向图) 3.边权可正可负(如有负权回路输出错误提示); 核心代码: int bellman_ford() { for(int i = 1; i <= n-1; i++ ){ for(int j = 1; j &…

2017年8月14日 0条评论 6点热度 阅读全文

文件头: #include<stdio.h> #include<stdlib.h> #include<ctype.h> #define NOTEXIST -1 #define BEGIN -1 #define MAXVEX 100 #define INFINITY 65535 #define TRUE 1 #define FALSE 0 typedef int EdgeType; typedef char VertexType; int path[MAXVEX]; int dis…

2017年8月9日 0条评论 15点热度 阅读全文

建图 与前面类似(邻接表) 图相关结构: #define MAXVEX 100 typedef char VertexType; typedef struct QNode { int front, rear; int data[MAXVEX]; int size; }Queue; typedef struct ENode { int ivex;//顶点 索引 struct ENode* next; }ENode; typedef struct VNode { VertexType data; // 顶点 信息 EN…

2017年8月5日 0条评论 10点热度 阅读全文

图的创建和遍历,以深度优先为例 import java.util.Scanner; class GraphMatrix { static final int MaxNum = 20; static final int MaxValue = 65535; char[] Vertex = new char[MaxNum];//保存顶点信息,序号或者字母 int GType;//图的类型(0: 无向图, 1: 有向图) int VertexNum;//顶点的数量 int EdgeNum; //边的数量 int[][] E…

2017年6月10日 0条评论 10点热度 阅读全文