【(图) 旅游规划 (25 分)】【Dijkstra算法】

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 500;
const int INF = 0x3f3f3f3f;
struct Road
{
int _len;
int _cost;
}road[maxn][maxn];
int vis[maxn];
struct City
{
int _len;
int _cost;
}d[maxn];
int N, M, S, D;
void init()
{
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
road[i][j]._len = INF, road[i][j]._cost = INF;
for(int i = 0; i < N; i++)
d[i]._len = INF, d[i]._cost = INF;
d[S]._len = 0;
d[S]._cost = 0;
}
void solve()
{
memset(vis, 0, sizeof(vis));
for(int i = 1; i <= N; i++)
{
int x, minlen = INF;
for(int j = 0; j < N; j++)
{
if(!vis[j] && d[j]._len < minlen)
{
minlen = d[j]._len;
x = j;
}
}
vis[x] = 1;
if(minlen == INF)
break;
for(int y = 0; y < N; y++)
{
if(!vis[y])
{
if(d[y]._len > d[x]._len + road[x][y]._len)
{
d[y]._len = d[x]._len + road[x][y]._len;
d[y]._cost = d[x]._cost + road[x][y]._cost;
}
else if(d[y]._len == d[x]._len + road[x][y]._len)
d[y]._cost = min(d[y]._cost, d[x]._cost + road[x][y]._cost);
}
}
}
}
int main()
{
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
scanf("%d %d %d %d", &N, &M, &S, &D);
init();
int a, b, c, dd;
for(int i = 0; i < M; i++)
{
scanf("%d %d %d %d", &a, &b, &c, &dd);
road[a][b]._len = road[b][a]._len = c;
road[a][b]._cost = road[b][a]._cost = dd;
}
solve();
printf("%d %d\n", d[D]._len, d[D]._cost);
}
【(图) 旅游规划 (25 分)】【Dijkstra算法】的更多相关文章
- PTA 07-图6 旅游规划 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...
- PAT 07-图6 旅游规划 (25分)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)
问题 F: (ds:图)旅游规划 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...
- C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)
1.Dijkstra算法 求一个顶点到其它所有顶点的最短路径,是一种按路径长度递增的次序产生最短路径的算法. 算法思想: 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的 ...
- 7-36 旅游规划 (25 分(Dijkstra)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- L2-023 图着色问题 (25 分)vector
图着色问题是一个著名的NP完全问题.给定无向图,,问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请 ...
- 7-9 旅游规划(25 分)(Dijkstra最短路径算法)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- 7-9 旅游规划 (25 分)(Dijkstra算法)
题意: 思路:单源最短路问题,Dijkstra算法搞定就可以了,因为要找出最便宜的最短路,所以需要在更新最短距离的时候加一个条件(即当最短距离相等的时候,如果该路径的花费更小,就更新最小花费)就可 ...
- PTA 旅游规划(25 分)
7-10 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
随机推荐
- linux添加虚拟内存交换内存,以及设置优先使用交换内存
场景:在网上买了台低配置服务器,1c1g,内存太小了,于是打起了交换内存的注意.上网一查,居然还真可以.以下是具体步骤 首先新建一个交换分区文件夹 dd if=/dev/zero of=/usr/sw ...
- 【layui】获取layui弹窗的index并关闭
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 parent.layer.close(index); // 关闭当前laye ...
- SpringBoot中使用Thymeleaf模板
1.引入pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- 如何使用RedisTemplate访问Redis数据结构之Zset
Redis的ZSet数据结构 Redis 有序集合和无序集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合 ...
- 第1课(续集),python turtle库的使用
原文再续,书接上一回 上回讲到了,python IDLE的草稿本和作业本,并顺便试了试python的输入输出,变量,运算的体验,大家应该能感受到python的简单了吧. 下面我们继续体验python的 ...
- MacBook Pro配置汇编开发环境
配置开发环境 方法一: 打开命令行,输入指令which nasm查看nasm的安装路径,Mac系统默认安装了nasm.一般默认返回的路径是/usr/bin/nasm 接着输入指令alias nasm= ...
- Selenium+Java(七)Selenium对话框的处理
HTML代码如图所示: 一.alert String url = "file:///C:/Users/ex_yuhao/Desktop/index.html"; //引用IE浏览器 ...
- .NET 的程序集加载上下文
原文:.NET 的程序集加载上下文 我们编写的 .NET 应用程序会使用到各种各样的依赖库.我们都知道 CLR 会在一些路径下帮助我们程序找到依赖,但如果我们需要手动控制程序集加载路径的话,需要了解程 ...
- (四) Docker 使用Let's Encrypt 部署 HTTPS
参考并感谢 周花卷 https://www.jianshu.com/p/5afc6bbeb28c 下载letsencrypt镜像(不带tag标签则表示下载latest版本) docker pull q ...
- IIS err_connection_timed_out(响应时间过长)
场景:我在服务器的IIS上部署了一个网站,服务器上可以正常打开,然后我用自己的电脑访问,出现如下错误: 原因:服务器的防火墙对入站规则进行了一些限制. 解决方法:1.打开服务器的防火墙-----> ...