文章

16

粉丝

0

获赞

66

访问

3.5k

头像
好坑的电子地图 题解:
P1666 中南大学机试题
发布于2025年3月19日 23:34
阅读数 85

分析题意,本题是求最短路径的题目,考虑使用迪杰斯特拉。本题的变化点在于奇数结点所连边需要权值加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;//用来记录对应结点奇偶所需加的权值
 ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发