摘要:
SPFA算法 求最短路径 构建vector邻接表,和w二维数组存储边权,注意初始化为无穷大代表这两个点间没有边 vector<int>linjie[maxn];//记录邻接点 int w[maxn][maxn];//记录边权 for (int i = 0; i <= n; ++i) for (int 阅读全文
摘要:
Djskstra算法 求最短路径 构建d数组,记录和起点的距离,初始化为无穷大,起点和起点的距离为0,构建邻接边权的二维数组,初始化为无穷大,然后输入边权。并且构建pre数组,记录最短路径的前驱结点,出发点的前驱结点设为0,代表出发点没有前驱结点,也是一会递归输出路径的退出条件。 int w[51] 阅读全文
摘要:
Ford 算法 求最短路径 先构建邻接表数组和初始化邻接关系 int v1[maxn],v2[maxn],w[maxn];//记录起点终点和权值 for(int i=1;i<=m;++i) { cin>>u>>v>>val; v1[i]=u; v2[i]=v; w[i]=val; } 构建一维数组d 阅读全文
摘要:
Floyd算法 求最短路径 建立一个二维数组d 代表i 和 j两点的最小距离,先初始化为很大的值,等下求最小距离方便 int d[200][200]; for (int i = 1; i <= n; ++i) for (int j = 1; j <= n; ++j) d[i][j] = 50000; 阅读全文
摘要:
Kruskal算法 求最小生成树 先构建邻接关系的结构体 struct edge { int u,v,w; }e[maxn]; 因为这个算法利用到了并查集,所以需要构建并查集数组parent[],并且初始化并查集数组parent int parent[maxn];//并查集 for(int i=1; 阅读全文
摘要:
Prim算法 求最小生成树 利用了蓝白点思想,先将所有点标记为蓝点。用一个数组布尔数组b 标记点的蓝白,如果为true就是蓝点,否则是白点。先定义一个整型变量mst=0,mst就是最小生成树。然后用一个二维数组w 记录 边i和边j之间的权值,再用一个一维数组mins 记录的是蓝点的最小边权,这个mi 阅读全文