文章

9

粉丝

0

获赞

30

访问

817

头像
好坑的电子地图 题解:C语言-Dijkstra的变种(结点含有惩罚时间)
P1666 中南大学机试题
发布于2026年3月17日 22:13
阅读数 41

#include<stdio.h>
#include<stdlib.h>
#define INF 0x3f3f3f3f
#define maxsize 1000


int Edge[maxsize][maxsize]; //邻接矩阵
int numedg, numvex;//边数 、 顶点数

int getWaitTime(int u) { //获得结点的惩罚时间
    if (u % 2 == 1)return 1;
    return 2;
}

void Dijkstra(int u, int v,int timeLimit) {

//仅需修改该算法的松弛操作部分即可


    int lowcost[maxsize];
    int visited[maxsize] = { 0 };
    for (int i = 1; i <= numvex; i++) {
        lowcost[i] = INF;
    }

    //初始化,出发点就有惩罚时间
    lowcost[u] = getWaitTime(u);

    for (int k = 0; k < numvex - 1; k++) {
        int min = INF;
        int pos = -1;
        for (int i = 1; i <= numvex; i++) {
            if (visited[i] ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发