7-3 旅游规划 (25 分)(C语言实现)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。
输入格式:
输入说明:输入数据的第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语言实现)相关推荐
- PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)
7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...
- PTA 07-图6 旅游规划 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...
- 案例6-1.5 旅游规划 (25 分)邻接表实现
案例6-1.5 旅游规划 (25 分) 用邻接表实现Dijkstra算法 这题一开始做的时候没想到用邻接数组做,所以就用的链表. 总的来说还是Dijkstra算法,只不过是存储方式的问题罢了,我用了四 ...
- 7-图6 旅游规划 (25 分)
7-图6 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干 ...
- 7-2 旅游规划 (25分)
7-2 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...
- 7-2 旅游规划 (20 分)c语言,浙江省2008年7月高等教育自学考试旅游资源规划与开发A卷2...
二.双项选择题(本大题共7小题,每小题2分,共14分) 在每小题列出的五个备选项中有两个是符合题目要求的,请将其代码填写在题后的括号内.错选.多选.少选或未选均无分. 1.属于旅游资源的经济特征表现的 ...
- 【dijkstra模板】旅游规划 (25 分)
立志用最少的代码做最高效的表达 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
- 07-图6 旅游规划 (25 分)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- PTA 7-1 旅游规划 (25分) 数据结构 Floyd
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
最新文章
- maya骨骼显示_干货 | 如何删除maya中绑定好的骨骼,只留下一个干净的模型
- php5.5.33 源码安装,Linux PHP5.3升级PHP5.5.33
- Java算法-奇怪的分式
- WIN7如何禁止IE浏览器自动升级
- python中形参*args和**kwargs简述
- VC++6.0如何创建与调用动态链接库(dll)
- JOJ的2042面试题目的数学推导过程
- 原来这么看导师对论文或文稿的批注才不会辜负!
- JDK,JRE,JVM三者关系
- 【C++】C++类的学习(五)——纯虚函数与抽象类
- (转)淘淘商城系列——搜索系统搭建
- 语句删除数据库表中有默认字段值的字段
- 改写反话技巧_2021考研唐迟阅读技巧总结
- 模糊数学 计算机智能,模糊数学与人智能技术.pdf
- 最好用的mac屏幕分辨率修改器:SwitchResX for Mac
- HTML——多选框和按钮、搜索框滑块简单验证
- 1.488Mpps是如何计算出来的
- Mapping Spiking Neural Networks的论文汇总以及思考
- java web底层原理_详解Java开发Web应用程序的底层原理
- 强叔侃墙 NAT篇 NAT Server 三十二字真言(上篇)_实验一正一反,出入自如去反存正,自断出路
热门文章
- 联想微型计算机M3500q怎么拆,联想ThinkCentre 超级Q 23 创新插拔 一机多用
- sharding-sphere按月动态分表
- niceyoo的2020年终总结-2021年Flag
- sqlserver启用登陆审计
- ie6 offsetWidth/offsetHeight无效
- Android 应用更新和在服务器下载android应用
- php 类学习,php的类学习(一)
- 详解html结构之间的各个关系,层级关系(以列表为例)
- 计算机汇编语言运用哪个进制,运用汇编语言怎样以2进制、8进制、10进制、16进制方式输出10进制的数的计算结果。...
- Beta冲刺(9/7)——2019.5.31