文章
16
粉丝
0
获赞
66
访问
3.5k
分析题意,本题是求最短路径的题目,考虑使用迪杰斯特拉。本题的变化点在于奇数结点所连边需要权值加1,偶数结点所连边权值加2,故我们可以在邻接矩阵初始化的时候就把这个权值加入进去,而求最短路径的具体实现就是迪杰斯特拉算法的思想了。
具体代码实现如下:
#include <bits/stdc++.h>
using namespace std;
int Graph[1000][1000];//邻接矩阵存储图
int vis[1000];//标记是否被求得最短路径
int dis[1000];//用于保存源点到各个点的最短路径
// 求单源最短路径用迪杰斯特拉
int main()
{
int n, m, s, t, a;
while (cin >> n >> m >> s >> t >> a)
{
for (int i = 1; i <= n; i++)
{
vis[i] = 0;
dis[i] = 0;
for (int j = 1; j <= n; j++)
if (i == j)
Graph[i][j] = 0;//结点到自身的距离为0
else
Graph[i][j] = INT_MAX;//其余的都设为无穷
}
for (int i = 1; i <= m; i++)
{
int u, v, time;
int wait = 0;//用来记录对应结点奇偶所需加的权值
 ...
登录后发布评论
暂无评论,来抢沙发