#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算法】的更多相关文章

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

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

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

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

  3. ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)

    问题 F: (ds:图)旅游规划 时间限制: 1 Sec  内存限制: 128 MB 提交: 14  解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...

  4. C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)

    1.Dijkstra算法 求一个顶点到其它所有顶点的最短路径,是一种按路径长度递增的次序产生最短路径的算法. 算法思想: 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的 ...

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

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

  6. L2-023 图着色问题 (25 分)vector

    图着色问题是一个著名的NP完全问题.给定无向图,,问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请 ...

  7. 7-9 旅游规划(25 分)(Dijkstra最短路径算法)

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

  8. 7-9 旅游规划 (25 分)(Dijkstra算法)

    题意: ​ 思路:单源最短路问题,Dijkstra算法搞定就可以了,因为要找出最便宜的最短路,所以需要在更新最短距离的时候加一个条件(即当最短距离相等的时候,如果该路径的花费更小,就更新最小花费)就可 ...

  9. PTA 旅游规划(25 分)

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

随机推荐

  1. eclipse Maven Dependencies pom

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  2. (二)Java数据结构和算法——数组

    一.数组的实现 上一篇博客我们介绍了一个数据结构必须具有以下基本功能: ①.如何插入一条新的数据项 ②.如何寻找某一特定的数据项 ③.如何删除某一特定的数据项 ④.如何迭代的访问各个数据项,以便进行显 ...

  3. Linux字符设备驱动实例—globalmem驱动

    1.globalmem虚拟设备实例 globalmem为“全局内存”的意思,在globalmem字符设备中会分配一片大小为GLOBALMEM_SIZE(4KB)的内存空间,并在驱动中提供对这片内存的读 ...

  4. SQlL Server ----- 通过年月进行查询

    websit  中的代码. 不修改 对控件进行修改,展示年月 WdatePicker({ dateFmt: 'yyyy-MM', isShowToday: false, isShowClear: fa ...

  5. IDEA配置类签名

  6. cannot access org.springframework.core.io.InputStreamSouce

    cannot access org.springframework.core.io.InputStreamSouce错误,把mian路径下main.iml文件备份一下,然后删除该文件,报错就会消失,但 ...

  7. Scratch学习中需要注意的地方,学习Scratch时需要注意的地方

    在所有的编程工具中,Scratch是比较简单的,适合孩子学习锻炼,也是信息学奥赛的常见项目.通常Scratch学习流程是,先掌握程序相关模块,并且了解各个模块的功能使用,然后通过项目的编写和练习,不断 ...

  8. Go语言【数据结构】字符串

    字符串 简介 一个字符串是一个不可改变的字节序列,字符串通常是用来包含人类可读的文本数据.和数组不同的是,字符串的元素不可修改,是一个只读的字节数组.每个字符串的长度虽然也是固定的,但是字符串的长度并 ...

  9. python自动化测试之appium环境安装

    1.安装client pip install Appium-Python-Clinet  若有两个版本的python则使用(python3 -m pip install Appium-Python-C ...

  10. Java——简单实现学生管理系统

    import java.io.*;import java.util.ArrayList;import java.util.Scanner;class MyObjectOutputStream exte ...