杭电2066-一个人的旅行(最短路径)

hdoj 2066 一个人的旅行 【多源多汇最短路】 题目:hdoj 2066 一个人的旅行 方法:缩点 + 最短路 分析:看了大神的一篇博客,讲冗余压缩的,然后就想找一个多源最短路练练手。 这个题目就是典型的多源多汇最短路 方法:把所有的源点压缩成一个点,然后汇点压缩成一个点,然后跑最短路 注意: 1:求最短路的时候邻接表存储有重边不影响结果。 2:此题有重边。 3:要特殊处理源点和汇点是同一个点的情况。为0 阅读详情

一个人的旅行

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25740    Accepted Submission(s): 8949


Problem Description
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^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
 
这个题有 多个起点和多个终点,所以用dijkstra的话,免不了多次调用函数,附上两种代码:



dijkstra:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int map[1500][1500],dis[1500],vis[1500];
int m,n,s,start[1500],target[1500];
int  dijkstra(int x)
{
	memset(vis,0,sizeof(vis));
	int i,j,mi,mark;
	for(i=1;i<1400;i++)
	dis[i]=map[x][i];
	dis[x]=0;
	vis[x]=1;
	for(i=0;i<=1400;i++)
	{
		mark=-1;
		mi=INF;
		for(j=1;j<=1400;j++)
		{
			if(mi>dis[j]&&!vis[j])
			{
				mi=dis[j];
				mark=j;
			}
		}
		if(mark==-1||mi==INF)
		break;
		vis[mark]=1;
		for(j=1;j<=1400;j++)
		{
			if(!vis[j]&&dis[j]>dis[mark]+map[mark][j])
			dis[j]=dis[mark]+map[mark][j];
		}
	}
	int as[1500];
	for(i=0;i<s;i++)
	as[i]=dis[target[i]];
	sort(as,as+s);
	return as[0];
}
int main()
{
	int i,j,a,b,c;
	while(scanf("%d%d%d",&m,&n,&s)!=EOF)
	{
		memset(map,INF,sizeof(map));
		for(i=0;i<m;i++)
		{
			scanf("%d%d%d",&a,&b,&c);
			if(map[a][b]>c)
			map[a][b]=map[b][a]=c;
		}
		for(i=0;i<n;i++)
			scanf("%d",&start[i]);
		
		for(i=0;i<s;i++)
			scanf("%d",&target[i]);
			int best=INF;
			for(i=0;i<n;i++)
			{
				int qw=dijkstra(start[i]);
				best=best>qw?qw:best;
			}
			printf("%d\n",best);
	}
	return 0;
}



floyd(只需调用一次函数):


#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int map[1500][1500],dis[1500],vis[1500];
int m,n,s,start[1500],target[1500];
void  floyd()
{
	int i,j,k;
	for(i=1;i<=1400;i++)
	{
		for(j=1;j<=1400;j++)
		{
			if(map[i][j]==INF)
			continue;//优化剪枝
			for(k=1;k<=1400;k++)
			{
				map[j][k]=min(map[j][k],map[j][i]+map[i][k]);
			}
		}
	}
}
int main()
{
	int i,j,a,b,c;
	while(scanf("%d%d%d",&m,&n,&s)!=EOF)
	{
		memset(map,INF,sizeof(map));
		for(i=0;i<m;i++)
		{
			scanf("%d%d%d",&a,&b,&c);
			if(map[a][b]>c)
			map[a][b]=map[b][a]=c;
		}
		for(i=0;i<n;i++)
			scanf("%d",&start[i]);
		
		for(i=0;i<s;i++)
			scanf("%d",&target[i]);
			floyd();
			int best=INF;
			for(i=0;i<n;i++)
			{
				for(j=0;j<s;j++)
				{
					int qw=map[start[i]][target[j]];
					best=best>qw?qw:best;
				}
			}
			printf("%d\n",best);
	}
	return 0;
}



【杭电100题】【Dijkstra】2066 一个人的旅行 原题链接 参考:Dijkstra算法标准模板 #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;algorithm&gt; using namespace std; /* Dijkstra算法,邻接矩阵形式,复杂度为O(n^2) 求出源beg到所有点的最短路径, 传入图的顶点数n和邻接矩阵cost[][] 返回各点的... 阅读详情

相关推荐

杭电oj第2066题:一个人的旅行

首先初始化原点到其他点的距离为无穷,方便后续的松动,在初始化dist[0]等0(因为原点到原点肯定是0)。再去找离当前点最近的节点,再更新其状态(访问还是未访问),因为每个点只能被访问一次。再根据找到的距离最近的点,去更新其相邻节点的距离,最最重要的是,每个节点只能被访问一次,所以你必须再更新相邻节点的时候,判断其是否被访问过。SPFA算法主要就是把当前的节点相邻的节点全部入队,然后每次根据队列弹出的第一个元素来更新其相邻的节点。知道队列中不存在元素。

2401_86314529的博客 1224

【杭电oj2066】一个人的旅行

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 32101    Accepted Submission(s): 11058 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居

better_space的博客 950

CMOS sensor 基础

NA

m0_72053187的博客 1657

杭电2066————Dijkstra的应用

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 19400    Accepted Submission(s): 6784 Problem Description 虽然草儿是个路痴(就是在杭电待了一年

SixDay 1139

人工智能学习之机器人路径规划优化

A* AStar 人工智能 机器人路径规划优化

RongLin02的博客 7073

别再只盯着meta包了!盘点R语言中7个元分析工具包的特色与适用场景

本文深入评测了R语言中7个主流元分析工具包(meta、metafor、netmeta、mada、mvmeta、metasens、rmeta)的核心功能与适用场景,帮助研究者根据具体需求精准选型。通过对比表格和实际代码示例,详细解析了各工具包在传统两两比较、网络Meta分析、诊断准确性研究等不同场景下的差异化优势,并提供了性能对比和组合使用建议。

weixin_30736301的博客 296

杭电 2066 一个人的旅行 最短路 Dijstra

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20267    Accepted Submission(s): 7081 Problem Description 虽然草儿是个路痴(就是在杭电待了一年

qq_35109846的博客 480

Labwindows CVI写上位机与STM32下位机通信(二)

接着上篇,这篇主要谈谈流量计数据读取。我们使用的MEMS流量计采用Modbus协议Modbus 使用RS-485 作为硬件载体。 一. Modbus协议   该协议定义了 Modbus 总线Master(主设备)与Slave(从设备)之间的通讯报文格式,对于主设备来说,Modbus 协议是联系上位机(如PC、PLC、HMI 等)的接口,而且所有的通讯都是“透明的”。控制器通信使用主-从技术,即

yang2011079080010的专栏 1万+

【杭电oj】2066 - 一个人的旅行(迪杰斯塔拉,优先队列优化)

点击打开题目 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 30189    Accepted Submission(s): 10376 Problem Description 虽然草

wyg1997 1052

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

Veeam Backup Replication Console 13 备份 PVE

本文介绍了如何通过Veeam Backup & Replication控制台配置与Proxmox VE(PVE)服务器的连接,包括主机地址、用户名密码和SSH信任设置。随后详细说明了部署备份Worker虚拟机的步骤,涵盖网络配置和VM创建。接着指导用户创建PVE虚拟机备份任务,包括命名、选择备份对象、存储位置、备份类型设置,以及配置备份计划任务。最后描述了备份测试执行过程,从启动备份到完成状态通知的完整流程。整个操作涉及服务器连接、Worker部署、备份配置和任务执行四个主要环节。

极致,细节 1602

杭电2066--一个人的旅行(最短路径…

Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时

牧野之歌 596

摩擦纳米发电机测试系统全解析:从硬件配置到软件控制

本文全面解析摩擦纳米发电机(TENG)测试系统,涵盖硬件配置、软件控制及系统集成。详细介绍NI USB-6003等采集卡的选择与使用,以及一体化控制软件的功能与优势,帮助研究人员高效评估纳米材料发电性能。系统支持自动测试与数据分析,显著提升测试效率与准确性。

weixin_28720767的博客 460

杭电2066 一个人的旅行

杭电2066 一个人的旅行 题目http://acm.hdu.edu.cn/showproblem.php?pid=2066 方法1:Dijkstra #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define mm 1010 using namespace std; int T, S, D,n,minn; int r[mm][mm],mark[mm];

记录一些刷过的题并分享学习心得 369

什么是DHCP Snooping?如何配置DHCP Snooping?

功能描述防护类型防御伪造 DHCP 服务器、避免地址冲突、增强网络安全性使用场景企业园区网、校园网、大型局域网配合机制IP Source Guard、DAI、防止 ARP 欺骗部署难度⭐⭐(简单)“DHCP Snooping,是内网 DHCP 安全防护的第一道门神。” 🛡️。

网络技术联盟站 1267

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

杭电2066一个人的旅行

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24552    Accepted Submission(s): 8512 Problem Description 虽然草儿是个路痴(就是在杭电待了一年

hpuzsk的博客 1337

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

杭电 2066 一个人的旅行

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18044    Accepted Submission(s): 6266 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然

bluedream1219的专栏 1191

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

杭电2066——一个人的旅行(Dijkstra)

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 67738 Accepted Submission(s): 22661 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,

abcdefghikk的博客 270

HDU2066:一个人的旅行

点击打开题目链接 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13653    Accepted Submission(s): 4599 Problem Description

I just want to AC you~~~ 1184

hdu_oj_2066 一个人的旅行

虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经

timboy的专栏 471

HDU2066 一个人的旅行【最短路径+Floyd算法】

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 68385 Accepted Submission(s): 22922 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,0),很多事,还能丰富自己的阅历,

海岛Blog 733

一个人的旅行(杭电oj2066)(Dijkstra算法)

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20267    Accepted Submission(s): 7081 Problem Description 虽然草儿是个路痴(就是在杭电待了一年

My Castle 1978

hdu 2066 一个人的旅行(简单的Dijkstra)

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24053    Accepted Submission(s): 8364 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然

ysCover 1148

HDU 2066 一个人的旅行

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12531    Accepted Submission(s): 4259 Problem Description 虽然草儿是个路痴(就是在杭电待了一年

C_K的专栏 684

ACM-最短路之一个人的旅行——hdu2066

ACM 多起点多终点最短路 一个人的旅行 hdu2066 Dijkstra

继续激情,继续奋斗。 2086

hdu 2066 一个人的旅行 最短路径floyd算法

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 40563    Accepted Submission(s): 13765 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居

Mystic_beauty的博客 610
上一篇: 杭电2680-Choose the best route(最短路反向建图)
下一篇: 杭电2473-Junk-Mail Filter
Eric_keke
博客等级 码龄12年 37粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值