HDU 5521 Meeting 化简边的最短路

OpenFOAM-v2006重叠网格挖洞问题实战:如何手动修复overset代码中的边缘识别缺陷 本文深入探讨了OpenFOAM-v2006中重叠网格挖洞问题的实战解决方案,重点修复overset代码中的边缘识别缺陷。通过逆向工程解析挖洞决策机制,设计最小侵入式的函数override方案,并建立多级验证体系,有效解决了网格挖洞区域覆盖不全的问题,提升了计算流体动力学模拟的准确性和可靠性。 阅读详情

Meeting

Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 1376    Accepted Submission(s): 441


Problem Description
Bessie and her friend Elsie decide to have a meeting. However, after Farmer John decorated his
fences they were separated into different blocks. John's farm are divided into  n  blocks labelled from  1  to  n .
Bessie lives in the first block while Elsie lives in the  n -th one. They have a map of the farm
which shows that it takes they  ti  minutes to travel from a block in  Ei  to another block
in  Ei  where  Ei (1≤i≤m)  is a set of blocks. They want to know how soon they can meet each other
and which block should be chosen to have the meeting.
 

Input
The first line contains an integer  T (1≤T≤6) , the number of test cases. Then  T  test cases
follow.

The first line of input contains  n  and  m .  2≤n≤105 . The following  m  lines describe the sets  Ei (1≤i≤m) . Each line will contain two integers  ti(1≤ti≤109)  and  Si (Si>0)  firstly. Then  Si  integer follows which are the labels of blocks in  Ei . It is guaranteed that  ∑mi=1Si≤106 .
 

Output
For each test case, if they cannot have the meeting, then output "Evil John" (without quotes) in one line.

Otherwise, output two lines. The first line contains an integer, the time it takes for they to meet.
The second line contains the numbers of blocks where they meet. If there are multiple
optional blocks, output all of them in ascending order.
 

Sample Input
  
2 5 4 1 3 1 2 3 2 2 3 4 10 2 1 5 3 3 3 4 5 3 1 1 2 1 2
 

Sample Output
  
Case #1: 3 3 4 Case #2: Evil John
Hint
In the first case, it will take Bessie 1 minute travelling to the 3rd block, and it will take Elsie 3 minutes travelling to the 3rd block. It will take Bessie 3 minutes travelling to the 4th block, and it will take Elsie 3 minutes travelling to the 4th block. In the second case, it is impossible for them to meet.
 

Source
 



题意:一张图有n个点,现在有m个集合,图以集合的形式给出,每个集合中所有点的距离相等,一个人从1出发,一个人从n出发,现要求求出一点,使得两人到这点的最大距离最小,如果有多个点则全部输出

思路:如果边很少的话,就是裸的最短路,从1出发做一次,从n出发做一次,枚举每个点求出最小的最大距离即可。但是现在集合中最多有1e6个点,有c(1e6,2)条边,如果不加修改直接套进最短路肯定会超时的。这道题有个特点,就是一个集合里点的距离是相等的,那么可以把一个距离为d的集合只看成两个点in与out,将这两个点的距离赋为d,集合中所有点连向in,out再连向所有的集合中的点,这样边数就不超过1e6了。



#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<queue>
#include<string.h>
#include<vector>
#define N 1000006
long long INF=100000000000000000;
using namespace std;
int n,m;
struct node
{
	long long d;
	int to;
};
vector<node>a[N];
long long dis1[N];
int vis[N];
long long disn[N];
int ans[N];
void spfa(int x,long long d[])
{
	queue<int> q;
	for(int i=1;i<=n+2*m;i++)d[i]=INF;
	memset(vis,0,sizeof(vis));
	q.push(x);
	vis[x]=1;
	d[x]=0;
	while(!q.empty())
	{
		int u=q.front(),v;
		q.pop();
		vis[u]=0;
		int ll=a[u].size();
		for(int j=0;j<ll;j++)
		{
			v=a[u][j].to;
			if(d[u]+a[u][j].d<d[v])
			{
				d[v]=d[u]+a[u][j].d;
				if(vis[v]==0)
				{
					vis[v]=1;
					q.push(v);
				}
			}
		}
	}
}

int main()
{
	int T,t;
	scanf("%d",&T);
	for(int t=1;t<=T;t++)
	 {  memset(ans,0,sizeof(ans));
	 	scanf("%d%d",&n,&m);
	 	memset(vis,0,sizeof(vis));
	 	for(int i=1;i<=2*m+n;i++)a[i].clear();
	 	for(int i=1;i<=m;i++)
	 	{   int nn;
	 	    long long di;
	 		scanf("%I64d%d",&di,&nn);
	 		int in=i+n;
	 		int out=i+n+m;
	 		node temp;
	 		temp.d=di;
	 		temp.to=out;
	 		a[in].push_back(temp);
	 		for(int j=1;j<=nn;j++)
	 		{
	 		 int x;
	 		 scanf("%d",&x);
	 		 node temp;
	 		 temp.d=0;
	 		 temp.to=x;
			 a[out].push_back(temp);
			 temp.to=in;
			 a[x].push_back(temp); 	
			 }
		 }
		 spfa(1,dis1);
		 spfa(n,disn);
		 int flag=0;
		 long long mind=INF;
		 for(int i=1;i<=n;i++)
		 {
		 	if(max(dis1[i],disn[i])<mind)
		 	{mind=max(dis1[i],disn[i]);
		    flag=1;
			}
		 }
		 printf("Case #%d: ",t);
		 if(flag==0)printf("Evil John\n");
		 else
		 {
		 printf("%lld\n",mind);
		 int cnt=0;
		 for(int i=1;i<=n;i++)
		 if(max(dis1[i],disn[i])==mind)ans[++cnt]=i;
		 for(int i=1;i<cnt;i++)printf("%d ",ans[i]);
		 printf("%d\n",ans[cnt]);
		 }
	 }
	 return 0;
}

在网上找图论题的题解都十分痛苦,别人的存图方式总是看不懂,只能自己硬写了,没想到竟然很神的1A了……暑假集训到现在,感觉别的都没什么长进,就是抄题解越来越快了,感觉要跪啊……
Vue+OpenLayers6一本通,OpenLayers6完整教程大全,OpenLayers6全知全解,OpenLayers6入门、实战、扩展进阶三合一专栏目录汇总 Gis开发入门,OpenLayers、Leaflet、Maplibre-gl和Cesiumjs地图引擎介绍以及几种地图服务vms、vmts介绍OpenLayers介绍,相比较其他地图引擎有什么优点OpenLayers7.x版本和6.x版本有什么区别,是否需要升级到OpenLayers7版本?OpenLayers6实战:OpenLayers创建自定义控件,以创建一个地图复位控件为例OpenLayers6实战,OpenLayers创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼控件位置、大小、文字和按钮等样式。 阅读详情

相关推荐

别再只看pLDDT了!AlphaFold预测结果解读保姆级指南:pLDDT、PAE、pTM、ipTM到底怎么看?

本文详细解析了AlphaFold预测结果中的关键指标pLDDT、PAE、pTM和ipTM,帮助用户从单一依赖pLDDT进阶到全面理解蛋白质结构预测。通过实际案例和技巧,指导如何正确解读这些指标,避免常见错误,并提供了从预测到发表的实用建议。

weixin_29100399的博客 353

HDU-5521-Meeting【2015沈阳赛区】【最短路】

HDU-5521-Meeting

Linoy 2515

Air780E模组AT指令实战:5分钟搞定MQTT连接EMQX服务器(附完整代码)

本文详细介绍了如何使用Air780E 4G模组通过AT指令快速连接MQTT服务器。从硬件接线、网络注册到MQTT连接配置,提供了完整的实战步骤和代码示例,帮助开发者快速实现物联网设备的数据上报与远程通信。

wdx012345的博客 741

HDU 5521 Meeting 【拆点+最短路】

题目链接 题意 给m个由图中结点组成的点集,点集中的点两两连通且距离为相等的ti。现有两人分别从1和N点处同时出发吗,问能否相遇以及相遇的最短时间。 分析 很容易想到直接分别以点1和点N为起始点求最短路,再遍历各个点即可求得最短相遇时间。然而建图上却有问题:这个题中的边是以点集的形式给出,极端情况下可能会出现有1E12条边的稠密图。 这时就要利用点集中的...

a18235146924的博客 88

告别繁琐同步:Zotero与Obsidian双向联动新方案(基于Better BibTeX与MarkDBConnect)

本文详细介绍了一套基于Better BibTeX、Bibnotes Formatter和MarkDBConnect插件的Zotero与Obsidian双向联动方案。该方案通过建立智能数据通道,实现文献信息的自动同步与笔记的增量更新,解决了手动同步的繁琐问题,并支持在两大工具间无缝跳转,极大提升了科研和知识管理的工作效率。

weixin_29213827的博客 641

【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战

大模型与知识图谱的融合不是简单拼接,而是认知智能的范式重构。当符号主义的精确性与连接主义的泛化能力深度交织,我们正站在通向可信AGI的关键路口。正如OpenKG技术委员会王昊奋教授所言:“2025年将是图模协同从技术探索走向规模落地的分水岭”。参考文献OpenKG 2024年度报告(同济大学王昊奋)大型语言模型与知识图谱协同研究综述(海豚实验室,2024)知识图谱与大模型结合方法概述(黄巍,2023)图模互补:知识图谱与大模型融合综述(优快云,2024)

知识靠谱的博客 1087

Hdu 5521 Meeting(建图+最短路)

题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=5521 思路:边数太多,不能直接建图。对于每个集合,设置一个虚拟点,对于每个集合中的点u:连一条u->S权值为0的边(点在集合中,花费为0);连一条S->u权值为w的边(从集合中一点到另一点花费w)。分别计算从点1到i和从点n到i的最短路,枚举i,则ans=min( ans,max ( d

哆啦AC梦的博客 805

【Unity】【Pico】【VR开发】为何PICO打包后真机运行闪退

由于并没有开版权验证,而且闪退后也并没有弹框说版权问题,所以还是怀疑环境有什么地方不对。设置步骤,项目配置都没问题,Build也成功,Unity版本是符合要求的2022LTS版本,但是一在真机上运行就闪退。

每日出拳老爷子的博客 3175

[hdu 5521 Meeting] 拆边 + Dijkstra

[hdu 5521 Meeting] 拆边 + Dijkstra题目链接:[hdu 5521 Meeting] 拆点 + Dijkstra 题意描述:给定NN个顶点,编号从1~N1\text{~}N,MM个顶点集合, 第ii个集合SiS_i中所有顶点两两距离是tit_i。Bessie从顶点11出发,Elsie从顶点NN出发,问他们两个最快相聚的时间,以及所以相聚的顶点的编号。注意的是,他们两人是可

Fighting! 541

微观交通流仿真软件:SUMO (Simulation of Urban MObility)_(8).仿真场景创建与编辑

总结文件()包含了仿真过程中的总体统计信息,如车辆生成数、平均速度等。加载总结文件使用Python的提取关键信息通过以上步骤,可以使用SUMO及其相关工具和库创建和编辑交通仿真场景。无论是手动创建、使用工具转换现有数据,还是通过Python脚本自动生成,SUMO都提供了丰富的功能来满足不同需求。此外,Traci库允许在仿真过程中动态调整交通场景,从而实现更精细的控制和优化。最后,通过对输出文件的分析,可以评估仿真结果并进行进一步的改进。

kkchenjj的博客 1266

钢结构焊接连接工艺

钢结构焊接连接工艺

wwdoffice950426的博客 61

hdu 5521 Meeting(最短路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 题意:有1-n共n个点,给出m个块(完全图),并知道块内各点之间互相到达花费时间均为ti。已知两人分别在点1和点n,求在哪些点相遇能使得花费时间最短。题解:显然先想到从点1和点n分别求最短路,然后枚举点找出哪些点是相遇花费时间最少的。但是这题边太多了,假设一个完全图里有x...

dhe56357的博客 201

2026年中兴微电子数字IC设计笔试题带答案

这篇考试试卷涵盖了数字IC设计的关键知识点,主要包含四个部分:单选题(18分)考查RTL仿真、低功耗设计、跨时钟域处理等基础知识;多选题(15分)涉及低功耗技术、异步FIFO设计和工具链使用;代码设计题(25分)要求实现两级同步器和时钟门控电路;简答题(42分)重点考察异步FIFO原理、ASIC设计流程、FPGA时钟处理和时序违例修复方法。试题注重理论与实践结合,既包含概念性知识也强调实际工程能力,全面检验学生对数字IC前端设计核心技术的掌握程度。

Open 118

HDU5521 Meeting(dijkstra+巧妙建图)

HDU5521 Meeting 题意: 给你n个点,它们组成了m个团,第i个团内有si个点,且每个团内的点互相之间距离为ti,问如果同时从点1和点n出发,最短耗时多少相遇 很明显题目给出的是个无负环的图,且要跑出单源最短路,那不就是个dij吗 大方向定下,但图该怎么建呢? way1: 给每个团内的所有点两两暴力建边 如图所示:黑的为点,红的为团,相同颜色的边长度相等 共 \(\...

baliu5600的博客 134

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

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

hdu5521 Meeting最短路

Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1112    Accepted Submission(s): 340 Problem Description Bessie and her fri

KeyboardPianist的博客 806

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU 5521 Meeting 最短路

给出n≤1e5n\leq1e5n≤1e5个点以及m≤1e5m\leq1e5m≤1e5个集合,每个集合SiS_iSi​包含若干个点,这些点两两之间权值为wiw_iwi​,然后求问两个人相遇的最短时间为多少以及在哪些点相遇时间是最短的。 首先是建边的问题,直接相连肯定是空间时间都不允许。构造的方法是给每个集合增加一个虚点,所有的点向这个虚点连wiw_iwi​的有向边,虚点再向所有的点连000的有向边。...

qq_40859782的博客 169

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

HDU 5521 Meeting【最短路】

今天旁观了Angry_Newbie的模拟区域赛(2015shenyang) 倒着看最先看的M题,很明显的最短路问题,在我看懂的时候他们已经开始敲B了。 后来听说D过了很多人。。 D题一看是个博弈,给了很多组样例,找找规律懵一懵就ac了。然后我就滚粗了。。。 而他们也早就A了D,很快他们又A了B。。。 后来就全程看着罗大神敲无限TLE的M。感觉算法肯定没错,但...

An55511的博客 214

hdu5521 Meeting 虚点建图+dij+堆优化

http://acm.hdu.edu.cn/showproblem.php?pid=5521 题意:就是问你从1和n两个地方出发,在那个点见面时间最短,若有时间相等的点 按升序输出点 存图难,算法就是dij。存图看了大佬的博客,意思是说如果直接存图 会存n*n的边 笋干爆炸,因为是集合这种,所以直接每个集合建立一个虚点,再把集合里的点连起来,相应的集合点连虚点边为给定权值,而虚点连集合点为0即...

gml1999的博客 334

hdu5521 Meeting

题目描述:MeetingTime Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 397 Accepted Submission(s): 129Problem Description Bessie and her friend Els

ruclion的专栏 1万+

HDU5521 Meeting【最短路】

题意:一张图,双向边,A在1节点,B在n节点,两人都能动,问他们最短的相遇时间,可以哪些点碰面。给了很多集合,集合内的点相互到达的时间为t 思路:给每个集合建一个点,集合内的点都连到这个点上,分别从A、B跑spfa,取每个点的两次最短距离的最大值,就是在这个点最短的遇见时间。巧妙建图,想不出QWQ #include #include #include #include #i

狂奔的蜗牛 391

HDU 5521 Meeting (最短路)

题意: 给定N<=105个点,M<=106个集合,集合内点可以随便到达,保证集合总点数<=106,权是w给定N<=10^5个点, M<=10^6个集合, 集合内点可以随便到达, 保证集合总点数<=10^6, 权是w 然后求两个人同时从1和n出发,最短路的相遇位置然后求两个人同时从1和n出发, 最短路的相遇位置 分析: 集合缩点,添加一个M个源点,源点→点 权为w,点→源点 权为0集合缩

TaoSama's Microcosm 2942

[最短路] HDU 5521 Meeting (最短路 + 虚点)

题目大意:有N个点,给定M个集合,集合Si里面的点两两之间的距离都为Ti,集合里面的所有点数之和<=1e6。两个人分别从1和n出发,要求相遇的最短距离,并输出相遇的点(可能多个)。 解题思路:首先无疑是最短路,然后因为同一个点可能属于两个或多个集合,故需要虚电。除了n个点外,每一个集合建一个新的点与集合中的点相连,集合中的点要到集合中的另一个点要先经过新建的点,所以走的路变成了2倍,分别从1...

蒟蒻的最后的倔强 315

Meeting HDU - 5521

Meeting HDU - 5521 题意: 一共有n个点,有m个块,每个块内有Si个点,块内点彼此到达费用为wi,两个人分别位于1和n号块,两者同时出发问最短时间遇到是多少?在哪些地方可以遇到? ΣSi<=106 题解: 题意很明确,我们需要先建边,然后从点1开始跑最短路得到dis[i],再从点n跑最短路得到dist[i] dis[i]表示第1个点到第i个点的最短距离 dist[i]表示第n个点到第i个点的最短距离 答案就是minn= min(max(dis[i],dist[i]),minn) 因为

qq_35975367的博客 333

hdu 5521 Meeting(最短路)

题目链接:hdu 5521 Meeting 题意: 有n个点,m个集合,每个集合之间的点到达的时间是相同的。 问一个人从1出发,一个人从n出发,他们相遇的最小时间是多久。 题解: 对于第i个集合,新设立一个点n+i,然后addedge(n+i,x,time),addedge(x,n+i,time) 然后就可以求出从1出发和从n出发到任意点的最短路了。 然后取一下两个最短路最大值的最小...

weixin_30437481的博客 109
上一篇: CF 699D Fix a Tree 并查集
下一篇: HDU 5754 Life Winner Bo 博弈
ctrss
博客等级 码龄11年 1粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值