有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。

输入格式:
输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。

输出格式:
在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。

输入样例:
4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20
输出样例:
3 40

这篇没有注释,看不懂代码的移步我的甲级专栏里的1003 Emergency (25 分),那个有详细的注释。

//迪杰斯特拉算法求7-3 旅游规划 (25 分)
#include <stdio.h>
#include <string.h>
#include<stdbool.h>
#define maxn 0x3f3f3f3f
int n;
int L[1001][1001]; //城市之间的距离
int W[1001][1001]; //城市之间的收费
int LL[1001];      //到起点的最近距离
int WW[1001];      //到起点的最近距离的收费
int flag[1001];    //是否走过
void Dijkstra(int x)
{memset(flag, false, sizeof(flag));memset(LL,maxn,sizeof(LL));LL[x] = 0;for (int j = 0; j < n; j++){int u = -1, min = maxn;for (int i = 0; i < n; i++){if (flag[i] == false && LL[i] < min){u = i;min = LL[i];}}if (u == -1)return;flag[u] = true;for (int i = 0; i < n; i++){if (L[u][i] != 0 && flag[i] == false){if (L[u][i] + LL[u] < LL[i]){LL[i] = L[i][u] + LL[u];WW[i] = W[i][u] + WW[u];}else if (L[u][i] + LL[u] == LL[i]){if (WW[u] + W[u][i] < WW[i]){WW[i] = W[u][i] + WW[u];}}}}}
}
int main()
{int m, s, d;scanf("%d %d %d %d", &n, &m, &s, &d);memset(L, maxn, sizeof(L));while (m--){int a, b, l, w;scanf("%d %d %d %d", &a, &b, &l, &w);L[a][b] = l, L[b][a] = l;W[a][b] = w, W[b][a] = w;}Dijkstra(s);printf("%d %d", LL[d], WW[d]);
}

7-3 旅游规划 (25 分)(C语言实现)相关推荐

  1. PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)

    7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  2. PTA 07-图6 旅游规划 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划   (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...

  3. 案例6-1.5 旅游规划 (25 分)邻接表实现

    案例6-1.5 旅游规划 (25 分) 用邻接表实现Dijkstra算法 这题一开始做的时候没想到用邻接数组做,所以就用的链表. 总的来说还是Dijkstra算法,只不过是存储方式的问题罢了,我用了四 ...

  4. 7-图6 旅游规划 (25 分)

    7-图6 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干 ...

  5. 7-2 旅游规划 (25分)

    7-2 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  6. 7-2 旅游规划 (20 分)c语言,浙江省2008年7月高等教育自学考试旅游资源规划与开发A卷2...

    二.双项选择题(本大题共7小题,每小题2分,共14分) 在每小题列出的五个备选项中有两个是符合题目要求的,请将其代码填写在题后的括号内.错选.多选.少选或未选均无分. 1.属于旅游资源的经济特征表现的 ...

  7. 【dijkstra模板】旅游规划 (25 分)

    立志用最少的代码做最高效的表达 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...

  8. 07-图6 旅游规划 (25 分)

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...

  9. PTA 7-1 旅游规划 (25分) 数据结构 Floyd

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...

最新文章

  1. maya骨骼显示_干货 | 如何删除maya中绑定好的骨骼,只留下一个干净的模型
  2. php5.5.33 源码安装,Linux PHP5.3升级PHP5.5.33
  3. Java算法-奇怪的分式
  4. WIN7如何禁止IE浏览器自动升级
  5. python中形参*args和**kwargs简述
  6. VC++6.0如何创建与调用动态链接库(dll)
  7. JOJ的2042面试题目的数学推导过程
  8. 原来这么看导师对论文或文稿的批注才不会辜负!
  9. JDK,JRE,JVM三者关系
  10. 【C++】C++类的学习(五)——纯虚函数与抽象类
  11. (转)淘淘商城系列——搜索系统搭建
  12. 语句删除数据库表中有默认字段值的字段
  13. 改写反话技巧_2021考研唐迟阅读技巧总结
  14. 模糊数学 计算机智能,模糊数学与人智能技术.pdf
  15. 最好用的mac屏幕分辨率修改器:SwitchResX for Mac
  16. HTML——多选框和按钮、搜索框滑块简单验证
  17. 1.488Mpps是如何计算出来的
  18. Mapping Spiking Neural Networks的论文汇总以及思考
  19. java web底层原理_详解Java开发Web应用程序的底层原理
  20. 强叔侃墙 NAT篇 NAT Server 三十二字真言(上篇)_实验一正一反,出入自如去反存正,自断出路

热门文章

  1. 联想微型计算机M3500q怎么拆,联想ThinkCentre 超级Q 23 创新插拔 一机多用
  2. sharding-sphere按月动态分表
  3. niceyoo的2020年终总结-2021年Flag
  4. sqlserver启用登陆审计
  5. ie6 offsetWidth/offsetHeight无效
  6. Android 应用更新和在服务器下载android应用
  7. php 类学习,php的类学习(一)
  8. 详解html结构之间的各个关系,层级关系(以列表为例)
  9. 计算机汇编语言运用哪个进制,运用汇编语言怎样以2进制、8进制、10进制、16进制方式输出10进制的数的计算结果。...
  10. Beta冲刺(9/7)——2019.5.31