这是一个深度优先搜索的问题。

首先,我们定义一个全局数组ss,用于记录从起点1到每个节点的最短距离。

然后,我们定义一个辅助函数dfs,用于进行深度优先搜索。在搜索的过程中,我们记录已经访问过的节点,并且更新ans数组。

在主函数中,我们首先使用fill函数将ss数组初始化为最大值,然后读入图的边。接下来,我们调用dfs函数进行深度优先搜索,并输出最终的结果。

在这个问题中,如果一个节点的最短距离为s,那么它的子节点的最短距离必然大于s。因此,我们可以在搜索的过程中根据节点的最短距离进行剪枝。

对于每个节点,如果它的最短距离为s,那么我们只需要搜索它的子节点中最短距离大于s的节点。这样可以有效减少搜索的复杂度。

在搜索的过程中,我们使用一个bitset数组vis来记录已经访问过的节点。这样可以避免重复访问同一个节点。

最后,我们输出ans数组的结果。

对于给定的输入,输出是1,0,0,0,0。

这是因为从起点1到节点2的最短距离是1,而节点2没有子节点。所以输出为1。

对于节点3、4和5,它们的最短距离都大于1,所以输出为0。

#pragma GCC optimize1#pragma GCC optimize2#pragma GCC optimize3Ofastinline#includebitsstdc++husing namespace std;inline static const nullptr_t _= ios_basesync_with_stdio0; cintienullptrcouttienu

原文地址: http://www.cveoy.top/t/topic/h90V 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录