带权最短路问题
最短路之最大点权问题 问题引入: PTA A1003 问题分析: 直接分析输入输出。 输入 点数n、边数m、起点st、终点ed 点权 边权 输出 最短路条数 最短路里最大点权和 题解 最短路算法无非dijkstra、Floyd、SPFA,这里以dijkstra算法为例。 在dijkstra的基础上再引入三个数组:weg[],点权,w[]记录最大点权,way[]记录最短路条数。 下面分析dij()函数: //邻接矩阵G[][],最短路数组dis[],访问数组vis[] void dij(int st, int ed)//传入起点、终点 { //初始化(从0开始计数) for (int i = 0; i < n; ++i) { vis[i] = 0; w[i] = 0; dis[i] = G[st][i]; } w[st] = weg[st];//起点的点权 way[st] = 1;//起点到起点的路径为1 dis[st] = 0; for (int i = 0; i < n; ++i) { int x = -1, mx = inf; for (int j = 0; j < n; ++j) { if (!vis[j] && dis[j] < mx) { x = j; m = dis[j]; } } if (x == -1) return;//若x为-1,则该点与其他点都不联通。 for