The 2017 Benelux Algorithm Programming Contest - D Detour

本文介绍了2017年Benelux Algorithm Programming Contest中D题(Detour)的详细解析,包括题目理解、题意解读、解题思路和错误分析。题目要求在给定图中找到一条从0到1的路径,避开所有指向最短路的标志。作者通过Dijkstra算法优化尝试解决问题,并分享了在删除边和优先队列优化过程中的思考和修正过程。
摘要由CSDN通过智能技术生成

题目链接:Gym 101666D

5月8日训练赛的题,专职读题其他啥也不会的本人读了一百遍也没读懂这个题意,挠头。不过这天整体状态都不对,真的“不会读题”了。

又过了一百年,我终于反应过来:“At no intersection, the bus goes in the direction that is pointed to by the signs.”,意思是不在任何一个交叉口,公交车是按标志走的。也就是说,在任何一个交叉口,公交车都不按标志走。

英语学习时间结束。

题意

给你一个图,每个点到点1都存在唯一一条最短路,指向最短路的方向会有一个标志,询问是否能找出一条从0到1的路径,满足在每个点都避开标志的方向。如果能找到,输出步数和路径;否则,输出impossible。

思路

一开始我只能想到从1点到各点用Dijkstra跑一遍最短路,把不能走的路打一个标记,然后再dfs一遍,不走标记过的路,看能否从0到达1。

删边的过程也是按照安学长说的,

			if(dis[i] + d == dis[j]) //边 i -> j 在最短路图中
			{
				vis1[edge[now]] = 1;
				swap(now.first, now.second);
				vis1[edge[now]] = 1;
			}<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值