hdu 6166 Senior Pan 最短路

HDU6166 Senior Pan 解题报告【图论】【SPFA最短路】【随机】 HDU 6166 阅读详情


Senior Pan

Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 179    Accepted Submission(s): 45


Problem Description
Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday.
The task is simple : ZKC will give Pan a directed graph every time, and selects some nodes from that graph, you can calculate the minimum distance of every pair of nodes chosen in these nodes and now ZKC only cares about the minimum among them. That is still too hard for poor Pan, so he asks you for help.
 

Input
The first line contains one integer T, represents the number of Test Cases.1≤T≤5.Then T Test Cases, for each Test Cases, the first line contains two integers n,m representing the number of nodes and the number of edges.1≤n,m≤100000
Then m lines follow. Each line contains three integers  xi,yi  representing an edge, and  vi  representing its length.1≤ xi,yi ≤n,1≤ vi ≤100000
Then one line contains one integer K, the number of nodes that Master Dong selects out.1≤K≤n
The following line contains K unique integers  ai , the nodes that Master Dong selects out.1≤ ai ≤n, ai !=aj
 

Output
For every Test Case, output one integer: the answer
 

Sample Input
  
1 5 6 1 2 1 2 3 3 3 1 3 2 5 1 2 4 2 4 3 1 3 1 3 5
 

Sample Output
  
Case #1: 2
 

Source
 

Recommend
liuyiding   |   We have carefully selected several similar problems for you:   6170  6169  6168  6167  6166 
 

Statistic |  Submit |  Discuss |  Note
题意:给你一个有向图,然后给你k个点,求其中一个点到另一个点的距离的最小值。

思路:恩。。。官方题解说的有点不清楚,搞得我斟酌了好一会大概知道他想说什么了。。首先一个集合到另一个集合的最短路径是可以一遍dijkstra算出来的。这个如果想不通最短路没过关。然后任意两个点在二进制表示上肯定至少有一位是不相同的,所以只要枚举二进制的位数,把k个点分成两个集合,跑logn次dijkstra就能把全部情况跑出来。。大概就这样,想通了的话代码是很好写的。下面给代码:

#pragma comment(linker, "/STACK:102400000,102400000") 
#include<iostream>  
#include<cmath>  
#include<queue>  
#include<cstdio>  
#include<queue>  
#include<algorithm>  
#include<cstring>  
#include<string>  
#include<utility>
#include<set>
#include<map>
#include<stack>
#include<vector>
#define maxn 100005
#define inf  0x3f3f3f3f3f3f3f3f
using namespace std;
typedef long long LL;
const double eps = 1e-5;
const int mod = 1e9+7;
struct Edge{
	int v, val,next;
}p[maxn];
struct node{
	int x;
	LL step;
};
int head[maxn], len, a[maxn], mark[maxn];
LL vis[maxn];
priority_queue<node>q;
bool operator<(node a, node b){
	return a.step > b.step;
}
void addedge(int u, int v,int val){
	p[len].v = v;
	p[len].val = val;
	p[len].next = head[u];
	head[u] = len++;
}
LL dijkstra(){
	while (!q.empty()){
		node now = q.top();
		q.pop();
		if (mark[now.x])
			return now.step;
		for (int i = head[now.x]; ~i; i = p[i].next){
			int next = p[i].v;
			if (vis[next] > now.step + p[i].val){
				vis[next] = now.step + p[i].val;
				q.push(node{ next, vis[next] });
			}
		}
	}
	return inf;
}
void init(){
	memset(vis, inf, sizeof(vis));
	memset(mark, 0, sizeof(mark));
	while (!q.empty())
		q.pop();
}
LL solve(int k){
	LL ans = inf;
	for (int i = 0; i < 20; i++){
		init();
		for (int j = 0; j < k; j++){
			if (a[j] & (1 << i)){
				q.push(node{ a[j], 0 });
				vis[a[j]] = 0;
			}
			else
				mark[a[j]] = 1;
		}
		ans = min(ans, dijkstra());
		init();
		for (int j = 0; j < k; j++){
			if (a[j] & (1 << i))
				mark[a[j]] = 1;
			else{
				q.push(node{ a[j], 0 });
				vis[a[j]] = 0;
			}	
		}
		ans = min(ans, dijkstra());
	}
	return ans;
}
int main(){
	int t;
	scanf("%d", &t);
	for (int tcase = 1; tcase <= t;tcase++){
		memset(head, -1, sizeof(head));
		len = 0;
		int n, m;
		scanf("%d%d", &n, &m);
		while (m--){
			int u, v, w;
			scanf("%d%d%d", &u, &v, &w);
			addedge(u, v, w);
		}
		int k;
		scanf("%d", &k);
		for (int i = 0; i < k; i++)
			scanf("%d", &a[i]);
		printf("Case #%d: %lld\n", tcase, solve(k));
	}
}


Abaqus 2023 保姆级安装避坑指南:从环境变量到许可证配置,一次搞定 本文提供Abaqus 2023的详细安装指南,涵盖环境变量设置、许可证配置等关键步骤,帮助用户避开常见安装陷阱。通过系统环境检查、目录结构规划、许可证服务器安装及Java环境配置等实用技巧,确保顺利完成安装并优化软件性能。 阅读详情

相关推荐

电磁阀的符号解读

先数方框数量定“几位”(工作位置数 );数接口数量(P、A、R等 )定“几通”;看箭头、截断符号,结合常态位(弹簧侧/中间位 ),分析通电/断电时的通路切换;字母(P、A、R )、线圈(单/双电控 )、弹簧(复位 )辅助确认功能(如NO/NC对应常态通断 )。不同厂家符号细节(如编码、线圈画法 )有差异,遇到陌生符号,建议结合产品手册、品牌规范核对,就能精准读懂电磁阀的“语言”啦~

创新改变世界! 6893

hdu6166-最短路&二进制枚举-Senior Pan

http://acm.hdu.edu.cn/showproblem.php?pid=6166 给定一个有向图,再给你一个集合。问这些集合中 两个点之间相互的最短路距离最小是多少。 思路:集合中每个数二进制都有一位不相同, 所以通过枚举二进制可以保证 包含了所有 两两枚举的情况。 然后dij的思路 就是通过 贪心+集合+有限的松弛操作 来搞事情的。 所以也可以计算集合之间的最短路,(学了一招

天与云与山与水 398

【强化学习】强化学习中,训练过程的稳定性是什么?该如何进行衡量?请详细进行解释

在强化学习中,训练过程的稳定性指的是算法在训练过程中表现出一致的行为,并且能够稳定地收敛到一个好的策略。收敛性:算法是否能够在有限的时间内收敛到一个近似最优的策略。鲁棒性:算法在不同的初始条件或环境扰动下的表现是否稳定。方差:算法在多次运行中表现出的变异程度。稳定的训练过程意味着算法的训练曲线平滑奖励信号变化小,且策略或价值函数的变化是渐进的。

wq6qeg88的博客 1629

hdu6166 最短路

传送门 题意:在一个有向图中,选出K个点,问任意两个点的最短距离中 最小的那个是多少。 因为K太大了,不能枚举任意两个点的距离,所以需要一些技巧,分组!,将所有点分成两组,设为A,B组,那么我们用优先队列求解,初始把所有A组点加入队列,以远离初始点距离最短的优先,A组中所有点一旦走到B组任意一个点,便找到了从A组到B组的一条最短路,我们要做的关键地方是分组,如何使得任意两个点都有一次机会不在同一

猿的进化 649

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 Var 变量篇】

例如我们已经知道一个符号(可能是变量或者函数)的地址,怎么确定这个地址是一个变量还是一个函数呢?如果是变量的话,变量名是啥?变量定义的位置在哪?如果是函数,函数名是啥?函数定义的位置又在哪呢?查看结构体变量 str_t32 的值。例如我们已经知道了一个符号的地址为。在map文件中的地址为。

CodingCos的博客 2349

MTK Meta ISP 工具使用技巧与参数读取路径全解析

在联发科(MediaTek, MTK)平台上进行相机图像调试时,Meta ISP 工具是连接 PC 与设备进行参数调整、寄存器读取和图像输出的重要工具。本文以实战角度出发,系统梳理 Meta ISP 的使用流程、关键模块功能、典型调试技巧与参数读取路径,结合最新版平台(如MTK Genio/Dimensity 系列)架构,帮助工程师掌握联发科图像调优的核心流程。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1147

HDU - 6166

题目链接:HDU - 6166 显然,如果我们把K个点可以分成两组,那么我们直接最短路就可以求出一组到另一组之间的最短路。 所以我们怎么分组才能尽量少的分组,使得任意两点一定会某一时刻存在不同集合呢?二进制分组。只需要分组log次。 然后因为是,有向图,分组的两种情况都需要跑一次最短路。 这个是稀疏图,spfa会比Dijkstra快很多。 AC代码: #pragma GCC optimize(...

青烟绕指柔的博客 634

Android Framework WMS全面概述和知识要点

WindowManagerService 类是整个 WMS 的核心大脑,处于系统服务层,负责协调和管理所有与窗口相关的操作。它在 Android 系统架构中起到承上启下的关键作用,向上对接应用层的窗口请求,向下与 SurfaceFlinger 等底层组件交互,确保窗口能够正确地在屏幕上显示和管理。

大模型大数据攻城狮的专栏 1793

【题解】HDU6166:Senior Pan

原题传送门 这是一种

ModestCoder_的博客 419

BMS硬件设计要点:从STM32主控到BQ76920监控芯片的工程实践

电池管理系统(BMS)是锂电安全与寿命保障的核心,其硬件设计涉及微控制器选型、专用监控芯片接口、电源完整性、信号完整性及PCB布局等多维度协同。基于STM32与BQ76920的典型双层架构,需深入理解功能安全解耦原理——关键保护由ASIC硬件实现,算法决策交由MCU完成,契合ASIL-B等级要求。技术价值体现在毫秒级硬件保护响应、±10mV电压采样精度及抗EMI鲁棒性设计;广泛应用于电动工具、储能系统与轻型电动车等中高功率场景。本文聚焦BMS控制板硬件实现中的高频时钟EMC、I²C总线信号完整性、被动均衡可

weixin_30591519的博客 92

64、5G 侧链通信技术详解

本文详细解析了5G侧链通信的关键技术,包括资源感知与选择、UE间协调、混合ARQ、功率控制、信道探测与CSI报告以及侧链同步。资源感知与选择通过周期性或随机方式实现资源分配,UE间协调通过主动或被动方式避免资源冲突。混合ARQ机制确保数据传输可靠性,功率控制和信道探测优化传输质量并减少干扰。侧链同步则通过多种方式确保设备间时间一致性。这些技术相互配合,构建了高效稳定的5G侧链通信体系,适用于智能交通、物联网、应急通信等多个领域,为未来无线通信发展提供强大支撑。

oil88的博客 101

hdu 6166 Senior Pan

http://acm.hdu.edu.cn/showproblem.php?pid=6166 题意: 给出一张无向图,给定k个特殊点 求这k个特殊点两两之间的最短路 二进制分组 枚举一位二进制位 这一位为1的放到起点集合 这一位为0的放到终点集合 跑一遍两个集合间的最短路 因为是有向图,反过来再跑一遍 正确性分析: 设最优解是x和y间的最短路 若x和y被分...

weixin_34293141的博客 154

一键熄火:在 SAP ABAP 平台停用 OAuth 2.0 Client 的正确姿势

本文是一篇面向SAP ABAP平台运维与开发团队的实战指南,重点讲解了OAuth 2.0客户端的停用操作。文章首先阐述了停用的必要性——当客户端存在泄漏风险或配置错误时,停用能在阻断访问的同时保留配置。随后详细介绍了通过SOAUTH2事务码执行停用的具体步骤,并区分了"停用"、"删除"和"撤销令牌"三个关键概念及其适用场景。 文章提供了两个真实案例:一个是怀疑客户端泄漏后的紧急处置流程,另一个是合规审计期间的冻结与恢复操作。最后总结了一份验证清单,

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 278

hdu 6166 Senior Pan(最短路)

Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 272    Accepted Submission(s): 80 Problem Description Senior Pan fail

MR CODER 775

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HDU 6166 Senior Pan 【二进制分组,最短路】

题目链接 题意 给出一张有向图,求其中 KKK 个点之间的最短路 显然求 KKK 次最短路会超时,可以换个角度思考。把KKK个点分成两个集合,同一集合内的点互相距离为0,最短路也就是这两个点集之间的最短路(最短路的两个端点不在同一个集合内)。 现在只需要考虑这个集合需要分多少次。从二进制的角度看,把集合KKK 中第 iii 位为 0 和为 1 的分为两个集合,这样对于无论最短路端点是哪两个,从第1位拆到第log(n)+1log(n)+1log(n)+1位,一定有一次会把他们拆到不同的集合。 每次对于两个集

qq_50554695的博客 304

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

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

Senior Pan HDU - 6166 (两个集合的最短路)

Senior Pan HDU - 6166 Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday. The task is simple : ZKC will give Pan a directed graph e...

nucleare的博客 268

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[hdu6166]Senior Pan——顶点集合最短路+二进制划分

题目大意: 给定一个有向图和一个顶点的集合,求这些顶点两两构成的最短路的最小值。 思路: 考虑把这个集合给随机划分,最后的答案s->t有很大概率被划分到了两个不同的集合。 正解为二进制划分。 何谓二进制划分?即对于集合中的物品编号,之后枚举其二进制下的每一位,对于每一位,都作一次划分:这一位为1的放入一个集合,这一位为0的放入一个集合。 考虑这样的正确性,两个不同的物品的编号二进制...

aizhuji9626的博客 208

HDU 6166 Senior Pan(思维 最短路)

题目:点击打开链接 题意:给一个有向图,n个点,m条边。给k个其中的点,求这k个点相互之间的路径值的最小值是多少。 思路:如果是暴力枚举这k个点到其他k-1个点的最短路取最小值一定是超时的。 正确做法是每次将k个点划分成两个集合,求这两个集合的最短路,取最小值。划分的方法应该保证这k个点均相互求过最短路,且划分次数不应太多以免超时。 这道题最难想到的是对这k个点进行划分,这里方法是这样的:

Code change the World. 407

hdu6166—Senior Pan(二进制划分跑最短路)

题目链接:传送门 Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 381    Accepted Submission(s): 138 Problem Description

zhiyuanjiang的博客 435

Senior Pan HDU - 6166 最短路+思维

题目链接https://vjudge.net/problem/HDU-6166参考http://blog.youkuaiyun.com/qq_33362864/article/details/77494173题意:给一个有向图,n个点,m条边。给k个其中的点,求这k个点相互之间的路径值的最小值是多少。这道题最难想到的是对这k个点进行划分,这里方法是这样的:将这k个点用二进制来划分。首先两个不相同的数,其二进制一

now_ing的博客 1064

HDU 6166 Senior Pan (最短路变形)

题目链接 Problem Description Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday.The task is simple : ZKC will give Pan a directed gra...

185

HDU 6166 Senior Pan 【二进制分组最短路 】 好题

传送门 //题意: n个点m条边的有向图, 给出询问的k个点, 问这k个点中最短路径是多少. //思路: 有个最明显的思路就是加一个超级源点S和超级汇点T, 然后连接询问的那些点, 然后跑一遍最短路即可, 问题就是万一同时连接到了一个点, 那怎么算最短路了, 我们可以知道这些点可以分为两个集合, 一个是起点集合, 一个是终点集合, 而我们的目的就是把正确的点放在相应的集合中, 这样答案一定就可

Anxdada -- 我等风来也等你 1076

HDU 6166 Senior Pan spfa(顶点集间最短路)

传送门:HDU6166 题意:给出一个有向图,并给出一个点集,请求出集合中的点任意两两之间的最短距离中最小的那个。 思路:当时xjb写了一发二分 + 爆搜,果不其然TLE。。 正解:戳这里戳这里 按照二进制位分组的思路真的是很巧妙啊。 代码: #include #define ll long long #define inf 0x3f3f3f3f using namespace std

WA是一笔财富 332

【二进制划分集合 最短路】HDU6166 Senior Pan

想通了就很神奇k个点,可以分为2个集合s1,s2 显然dijkstra一遍即可得到s1到s2的最小距离考虑枚举2进制的每一位 若第i位=1,则分进s1,否则分进s2 显然所有不同的pair组合都被包含了

Starry_starry_night的博客 668

Senior Pan HDU - 6166 (最短路咯)

Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday. The task is simple : ZKC will give Pan a directed graph every time, and selects som

Coldfresh的博客 633

HDU 6166 Senior Pan (最短路 好题)

题意:给你一个n个点m条边的有向带边权的图。现在给你k个点,问k个点中最近的点对距离。 n, m, k 思路:这题的思路好强啊。。。任意两个点在二进制表示上肯定至少有一位是不相同的,所以我们可以枚举二进制的 位数,每次把k个点中二进制某一位为1的分一个集合,为0的分一个集合,做一次最短路,找到这两个集合之间的最 短路。枚举所有二进制的位数后,这样就包含了所有点对的最短路。(求集合与

CillyB的博客 535
上一篇: hdu 6148 Valley Numer 数位dp
下一篇: hdu 6171 Admiral 双向bfs+hash
overload1997
博客等级 码龄11年 328粉丝 210原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值