题目链接: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;
}
<