(多源转化成单源dijsktra)一个人的旅行

虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去。。。眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。
Input
输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路)
接着的第T+1行有S个数,表示和草儿家相连的城市;
接着的第T+2行有D个数,表示草儿想去地方。
Output
输出草儿能去某个喜欢的城市的最短时间。
Sample Input
6 2 3
1 3 5
1 4 7
2 8 12
3 8 4
4 9 12
9 10 2
1 2
8 9 10
Sample Output
9

分析与解答:
我一开始想着写两个for循环一遍起点终点,然后调用Dijkstra。这样是因为我没有深刻理解dijkstra
其实这只是起点不同而已,如果我们多一个结点记为0表示为草儿家,那现在dis可以看作从0到那些不同的结点的最短路。
题目没给n最大是多少,我们先找出最大的n,
一般的dijkstra都是初始化起点的dis为0,然后循环,不断地标记并且更改dis。这里我们仍然初始化dis[0]=0,只不过0到那些起点的距离是0而已。这样和那些一般的dijkstra算法是一摸一样了
最后找不同终点最短的dis就行
注意由于输入的那几行到map里是没有0的,所以有多个起点的那行,我们把零到起点的map赋值就行

参考代码:https://blog.csdn.net/libin56842/article/details/16919583
我和他写的dijkstra不太一样,因为我这个是最普通的dijkstra模板,只不过循环了n+1次,因为我多加了一个起点0

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int inf = 1000000;int T,S,D,n;
int map[1111][1111];
int vis[1111],cast[1111];
int s[1111],e[1111];void Dijkstra()
{int i,j,minn,pos;memset(vis,0,sizeof(vis));memset(cast,inf,sizeof(cast));//  for(i = 0; i<=n; i++)//0和其他城市的距离修改上(如果相邻城市距离为零) //  cast[i] = map[0][i]; cast[0]=0;for(i = 0; i<=n; i++)//城市个数是0-n {minn = inf;for(j = 0; j<=n; j++)//找一个目前来说cast最短的 ,而且没有标记过的 城市x {if(cast[j]<minn && !vis[j]){pos = j;minn = cast[j];}}vis[pos] = 1;for(j = 0; j<=n; j++)//更新和x相连的城市的距离 {if(cast[pos]+map[pos][j]<cast[j] && !vis[j])cast[j] = cast[pos]+map[pos][j];}}
}int main()
{int i,j,x,y,z,start,end;while(~scanf("%d%d%d",&T,&S,&D)){n = 0;for(i = 0; i<1111; i++)//初始化邻接矩阵 {for(j = 0; j<1111; j++)map[i][j] = inf;map[i][i] = 0;}while(T--)//六行路径信息 {scanf("%d%d%d",&x,&y,&z);n = max(max(n,x),y);//n是最大的城市标号 if(z<map[x][y])map[x][y] = map[y][x] = z;}int minn = inf;for(i = 0; i<S; i++)//相邻的城市 {scanf("%d",&s[i]);map[0][s[i]] = map[s[i]][0] = 0;//假设他们家是0号 }for(i = 0; i<D; i++)scanf("%d",&e[i]);Dijkstra();for(i = 0; i<D; i++)minn = min(minn,cast[e[i]]);printf("%d\n",minn);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最短路模板题

题目&#xff1a; 在每年的校赛里&#xff0c;所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候&#xff0c;却是非常累的&#xff01;所以现在他们想要寻找最短的从商店到赛场的路线&#xff0c;你可以帮助他们吗…

php 取经纬度,php根据地址获取百度地图经纬度的实例方法

首先我们来看全部实例代码&#xff1a;/*** param string $address 地址* param string $city 城市名* return array*/function getLatLng($address‘‘,$city‘‘){$result array();$ak ‘‘;//您的百度地图ak&#xff0c;可以去百度开发者中心去免费申请$url "http://…

(kruskal算法复习+模板)Eddy's picture

题目&#xff1a; Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draws pictures in his small room, and he usually puts out his newest pictures to let his friends appreciate. but the result it can be…

php解密 eval( base64_decode,PHP之eval(gzinflate(base64_decode加密解密

从网上下载了个php版本的小游戏站的源码&#xff0c;一直都没有时间看&#xff0c;今天闲着没事看了下各个文件夹的内容&#xff0c;有一个文件引起了小胡的注意&#xff0c;文件名为php.php&#xff0c;打开之后发现了是加密过后的php文件&#xff0c;于是试着找了下相关的解密…

(kruskal)Jungle Roads

题目 The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensive to mainta…

php 留言板分页显示,php有分页的留言板,留言成功后怎么返回当前页?

比如我在【index.php?p3】发布留言&#xff0c;成功后怎么返回到 index.php?p3 这个页面&#xff1f;在【index.php?p5】发布留言成功后怎么返回index.php?p5这个页面&#xff1f;location.href"这里该怎么写&#xff1f;"涉及的页面有index.php&#xff0c;doac…

(最短路)HDU Today(hdu2112)

题目 Problem Description 经过锦囊相助&#xff0c;海东集团终于度过了危机&#xff0c;从此&#xff0c;HDU的发展就一直顺风顺水&#xff0c;到了2050年&#xff0c;集团已经相当规模了&#xff0c;据说进入了钱江肉丝经济开发区500强。这时候&#xff0c;XHD夫妇也退居了…

php文件读取文件内容,PHP文件系统函数-读取文件内容几种方式

介绍几种php获取文件内容的方式介绍读取文件的方式之前&#xff0c;我们先看一下打开文件资源和关闭资源名字资源绑定到一个流 - fopen关闭一个已打开的文件指针 - fclose$handle1 fopen("/home/rasmus/file.txt", "r");fclose($hanle1);$handle2 fopen(…

欧几里得算法和扩展欧几里得算法详解

欧几里得算法&#xff1a; int gcd(int x,int y){if(y) return gcd(y,x%y);return x; }扩展欧几里得算法&#xff1a; 先说一个整体思路&#xff1a; 先求AxBygcd(A,B);的一个解x&#xff0c;y 然后我们可以求他的通解 然后求AxByC的通解 我们先看看怎么求AxBygcd(A,B);的一…

php class使用方法,PHP调试类Krumo使用教程

写程序最讨厌的是程序发生错误&#xff0c;但是却又不知道该从何debug起&#xff0c;我们通常会使用print_r 或者 var_dump 或者是 echo 慢慢的debug。如果你跟我一样使用PHP 5开发&#xff0c;现在可以使用Krumo这个简单好用的工具帮助我们做这件事情。虽然IDE也有内建的debug…

(扩展欧几里得)青蛙的约会

题意 两只青蛙在网上相识了&#xff0c;它们聊得很开心&#xff0c;于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上&#xff0c;于是它们约定各自朝西跳&#xff0c;直到碰面为止。可是它们出发之前忘记了一件很重要的事情&#xff0c;既没有问清楚对方的特…

(待定系数法)A/B

题目&#xff1a; 要求(A/B)%9973&#xff0c;但由于A很大&#xff0c;我们只给出n(nA%9973)(我们给定的A必能被B整除&#xff0c;且gcd(B,9973) 1)。 Input 数据的第一行是一个T&#xff0c;表示有T组数据。 每组数据有两个数n(0 < n < 9973)和B(1 < B < 10^…

matlab 连接数组,matlab数组操作知识点总结

其实如果单从建模来讲&#xff0c;以下大部分函数都用不到&#xff0c;但是这些都是基础。第一点&#xff1a;数组与矩阵概念的区分数组&#xff1a;与其它编程语言一样&#xff0c;定义是&#xff1a;相同数据类型元素的集合。矩阵&#xff1a;在数学中&#xff0c;矩阵(Matri…

(组合数求模=乘法逆元+快速幂) Problem Makes Problem

题目&#xff1a; As I am fond of making easier problems, I discovered a problem. Actually, the problem is ‘how can you make n by adding k non-negative integers?’ I think a small example will make things clear. Suppose n4 and k3. There are 15 solutions.…

php做图书网站,基于PHP的图书馆网站管理系统的设计与实现

《现代图书情报技术 》 年 第 期 工作交流 总第 期基于 的图书馆网站管理系统的设计与实现 郑婷婷 张 羽 辽宁大学图书馆 沈阳 【摘要 】 阐述了在 下 , 使用 十 设计并实现 了图书馆网站管理系统 。 分系统平台如何搭建 、 系统结构如何设计以及最终如何实现三大部分 。 【关键…

(小费马定理降幂)Sum

题目&#xff1a; 分析与解答&#xff1a; 参考思路&#xff1a; https://www.cnblogs.com/stepping/p/7144512.html https://blog.csdn.net/strangedbly/article/details/50996908 根据隔板定理&#xff0c;把N分成一份的分法数为C(1,n-1)&#xff0c; 把N分成两份的分法…

温度 数值模拟 matlab,西安交通大学——温度场数值模拟(matlab)

西安交通大学材料制备与成型实验——温度场数值模拟,matlab编程温度场模拟matlab代码&#xff1a;clear,clc,clfL18;L28;N9;M9;% 边长为8cm的正方形划分为8*8的格子 T0500;Tw100; % 初始和稳态温度 a0.05; % 导温系数tmax600;dt0.2; % 时间限10min和时间步长0.2s dxL1/(M-1);dy…

matlab 参数识别,[转载]自编最小二乘法的Matlab参数辨识程序(含实例)

function [sysd,sys,err] ID(Y,U,Ts)%%基于递推最小二乘法的参数辨识程序%仅针对二阶系统&#xff1a;)%出处&#xff1a;http://blog.sina.com.cn/xianfa110%---------------%Inputs:%---------------%Y nX1 vector of your model output%U nX1 vector of your model input…

(回文串全排列个数) xiaoxin juju needs help

题目 As we all known, xiaoxin is a brilliant coder. He knew palindromic strings when he was only a six grade student at elementry school. This summer he was working at Tencent as an intern. One day his leader came to ask xiaoxin for help. His leader gav…

让apache解析html里的php代码,让Apache解析html文件中的php语句

为什么要干这种事呢&#xff1f;原因在于:对于纯粹的网页来说(不涉及对于数据库的操作)&#xff0c;可以使用一些软件来生成html代码。推荐软件Axure但是&#xff0c;当生成html文件之后&#xff0c;你发现还要写php语句对数据库进行操作时&#xff0c;就会遇到一些问题。首先&…